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

-----------------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对象)
上一篇:从Mybatis中#和$的区别到SQL预编译


下一篇:DHCP服务