0
点赞
收藏
分享

微信扫一扫

mybatis的mapper动态代理方法


Mapper动态代理方法:程序员只需要写dao接口(Mapper),而不需要写dao实现类,由mybatis根据dao接口和映射文件中statement的定义生成接口实现代理对象。可以调用代理对象方法。

Mybatis官方建议:将dao接口叫做mapper。

目标:通过一些规则让mybatis根据dao接口和映射文件中statement的定义生成接口实现代理对象

mybatis将以下代码自动在代理对象实现:

User user = sqlSession.selectOne("test.findUserById", id);

如何让mapper接口找到mapper.xml中statement的id。



工程结构

mybatis的mapper动态代理方法_xml


第一步:开发mapper.xml映射文件

UserMapper.xml

<?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.mo.dao.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.mo.pojo.User">
SELECT * FROM USER WHERE id = #{id}
</select>
</mapper>


为了让mapper.xml和mapper.java对应起来,将mapper.xml中的namespace设置为mapper.java全类名

<mapper namespace="com.mo.dao.UserMapper">



第二步:开发mapper.java接口

mapper.java接口文件命名规则为:XXXMapper.xml


public interface UserMapper {
User findUserById(int id);
}


mybatis生成代理对象时,根据XXXMapper.xml配置文件中statement标签来决定 调用SqlSession方法(select、insert、update..)

根据上边接口方法返回值类型来决定 是调用 selectOne还是selectList,如果返回的是单个对象,动态代理调用selectOne(),如果返回的是集合对象,动态代理调用selectList()。



Mapper.xml开发规则

1、 在mapper.xml中将namespace设置为mapper.java的全限定名

2、 将mapper.java接口的方法名和mapper.xml中statement的id保持一致。

3、 将mapper.java接口的方法输入参数类型和mapper.xml中statement的parameterType保持一致

4、 将mapper.java接口的方法输出 结果类型和mapper.xml中statement的resultType保持一致





举报

相关推荐

0 条评论