本篇文章主要介绍了"[mybatis]Mapper接口代理开发",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
Mapper代理实现思想:1. 首先映射文件的namespace命名空间必须是Mapper的完全限定名2. 其次每个statement的id必须与Mapper里...
Mapper代理实现思想:
1. 首先映射文件的namespace命名空间必须是Mapper的完全限定名
2. 其次每个statement的id必须与Mapper里的方法名一致
3. 然后映射文件中的输入参数与输出参数又与Mapper里的方法对应
4. 最后根据映射文件中的每个statement标签头判断是执行哪个CRUD
所以Mapper代理在实现接口中的方法时,
1 : 代理方法的返回值,
2 : 方法体中Session要执行哪个方法
3 : 以及方法体中Session执行CRUD方法的第一个参数(statement的id),第二个参数( 4:代理方法传参进来)
就都明确了
/*
* UserMapper接口开发规范 :
* 1 : 接口方法名为UserMapper.xml中statement的id值
* 2 : 接口方法参数为UserMapper.xml中parameterType对应的值
* 3 : 接口方法返回值为UserMapper.xml中resultType对应的值
*//*
* 代理对象内部怎样调用selectOne或selectList?
*
* 1 : 如果mapper方法返回单个pojo对象(非集合对象)
* 代理对象内部掉用selectOne()
* 2 : 如果mapper方法返回集合对象
* 代理对象内部调用selectList()
*
*//*
* mapper接口方法参数只能有一个是否影响开发 ?
* 系统框架中,dao层的代码是被业务层公用的,
* 即使mapper接口方法只能有一个参数,
* 可以使用包装类型的pojo满足不同的业务方法的需求
*/
首先是UserMapper.xml
<mappernamespace="mapper.UserMapper" ><selectid="findUserById"parameterType="int"resultType="Bean.User">
SELECT * FROM USER WHERE ID=#{id}
select><selectid="findUserByName"parameterType="java.lang.String"resultType="Bean.User">
SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
select><insertid="insertUser"parameterType="Bean.User">
insert into user(id,username,birthday,sex,address)
value(#{id},#{username},#{birthday},#{sex},#{address})
insert><deleteid="deleteUser"parameterType="java.lang.Integer">
delete from user where id = #{id}
delete><updateid="updateUser"parameterType="Bean.User">
update user
set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id = #{id}
update>mapper>
Mapper代理
import Bean.User;
/**
* @Description: UserMapper接口
* @author 佳。
* @date 2016年3月8日
*/publicinterfaceUserMapper {//根据id查找用户public User findUserById (int id) ;
//根据名字查找用户集合public List findUserByName (String username) ;
//插入一条记录publicvoidinsertUser (User user) ;
//根据id删除一个用户publicvoiddeleteUser (int id);
//根据id删除一个用户publicvoidupdateUser (User user) ;
}
MapperTest测试类