mybatis---Mapper動態代理開發
阿新 • • 發佈:2018-11-29
UserMapper介面:
package com.it.mybaties.mapper;
import com.it.mybaties.pojo.User;
public interface UserMapper {
public User getUserById(Integer id);
}
Test:
package com.it.mybaties.junit; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.it.mybaties.mapper.UserMapper; import com.it.mybaties.pojo.User; public class TestMapper { @Test public void fun() throws Exception{ String resource = "sqlMapperConfig.xml"; InputStream in = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserById(37); System.out.println(user); } }
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" > <mapper namespace="com.it.mybaties.mapper.UserMapper"> <select id="getUserById" resultType="com.it.mybaties.pojo.User" parameterType="Integer"> select * from user where id=#{id} </select> <select id="getUserByUsername" parameterType="String" resultType="com.it.mybaties.pojo.User"> <!-- 用$符號時,只能用value 其他都是錯 --> <!-- select * from user where username like '%${value}%' --> <!-- #號裡隨便寫什麼 --> select * from user where username like "%"#{username}"%" </select> <insert id="insertUser" parameterType="com.it.mybaties.pojo.User"> <selectKey keyProperty="id" resultType="Integer" order="AFTER"> select LAST_INSERT_ID() </selectKey> insert into user (username,sex,birthday,address) values (#{username},#{sex},#{birthday},#{address}) </insert> <update id="updateUser" parameterType="com.it.mybaties.pojo.User"> update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id} </update> <delete id="deleteUser" parameterType="Integer"> delete from user where id=#{id} </delete> </mapper>
Mapper介面開發需要遵循以下規範:
- Mapper.xml檔案中的namespace與mapper介面的類路徑相同。
- Mapper介面方法名和Mapper.xml中定義的每個statement的id相同
- Mapper介面方法的輸入引數型別和mapper.xml中定義的每個sql 的parameterType的型別相同
- Mapper介面方法的輸出引數型別和mapper.xml中定義的每個sql的resultType的型別相同