Mybatis学习系列(四)Mapper接口动态代理

实现原理及规范

Mapper接口动态代理的方式需要手动编写Mapper接口,Mybatis框架将根据接口定义创建接口的动态代理对象,代理对象的方法体实现Mapper接口中定义的方法。

使用Mapper接口需要遵守以下规范:

1.  Mapper.xml文件中的namespace与mapper接口的类路径相同

2.  Mapper接口方法名和Mapper.xml中定义的每个statement的id相同

3.  Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同

4.  Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

编写Mapper.xml映射文件

定义mapper映射文件ProductMapper.xml,需要修改namespace的值为 ProductMapper接口路径

<?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"> <!-- namespace:此处使用包名+文件名 的形式 --> <mapper namespace="com.sl.mapper.ProductMapper"> <!-- 返回自定义类型 注意 selectAllProduct返回的是集合,这种情况下resultType是集合包含的类型,而不能是集合本身 --> <select id="selectAllProduct" resultType="com.sl.po.Product"> select * from products </select> <select id="selectProductsByVo" resultType="com.sl.po.Product"> select * from products <where> <if test="product.cityCode!=null"> and citycode = #{product.cityCode} <!-- citycode = #{cityCode} --> </if> <if test="product.Name!=null"> and name like #{product.Name} </if> <if test="product.Description!=null"> and description like #{product.Description} </if> </where> </select> </mapper>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdyfs.html