mybatis中的动态代理应用(mapper对象)

时间:2020-12-22 05:06:30
-----------------UserMapper的配置信息---------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tabchanj.mybatis.domain.UserMapper">
    <resultMap type="com.tabchanj.mybatis.domain.User" id="User"/>
    <select id="get" parameterType="Long" resultMap="User">
        select * from
        t_user
        where id = #{id}
    </select>

    <select id="list" resultMap="User">
        select * from t_user
    </select>
</mapper>

1.将mapper配置文件中的namespace路径作为一个接口的全限定名,即创建一个接口,其全限定名为namespace的名称.

2.该接口的方法名与mapper文件中的sql语句的id名相同,返回值与sql语句的resultType相同,参数类型与paramterType相同,

---------UserMapper接口------------
package
com.tabchanj.mybatis.domain; import java.util.List; public interface UserMapper { User get(Long id); List<User> list(); }

3.使用时,通过 sqlsession对象.getMapper(接口.class)获取到该接口的代理实现类,,可以直接使用该类进行crud,该类可看作是一个Dao.

    @Test
    public void testName1() throws Exception {
        //通过sqlsession获得代理对象(Mapper)
        UserMapper mapper = MyBatisUtil.openSession().getMapper(UserMapper.class);
        //mapper调用接口中方法,相当于执行了mapper映射文件中的id为get的sql语句
        User u = mapper.get(1L);
        System.out.println(u + "----------");
        //mapper调用接口中方法,相当于执行了mapper映射文件中的id为list的sql语句
        List<User> list = mapper.list();
        for (User user : list) {
            System.err.println(user + "........");
        }
    }
结果:
   mybatis中的动态代理应用(mapper对象)