MyBatis----mapper的输入映射和输出映射
mapper.xml文件是我们使mybatis时配置操作数据库语句的方,每个语句对应一个方法,具有输入参数和输出参数,各个参数有不同的类型,下面所说的就是何配置不同类型的参数
输入映射
-
简单类型
即java类库中原本所拥有的数据类型,如Integar,Long,String等。
配置方法,直接将类型添加到sql语句的parameterType属性中,代码如下
<select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User"> SELECT * FROM user where id=#{id} </select>
-
pojo对象类型
输入的参数为一个pojo对象,可在sql语句中使用的参数为该对象的属性, #{ } 或者 ${ } 括号中的值为pojo属性名称。
使用前,需要在mapper-config.xml中的<typeAliases>
标签下先声明该pojo对象,如<typeAlias alias="PageParam" type="com.param.PageParam"/>
当需要对属性值进行计算时,只要在其中一个括号内写出计算过程,如下面代码中倒数第2行。
<select id="getStockPage" parameterType="stockParam" resultMap="BaseStockResultMap"> SELECT BOOK.*,num FROM BOOK,stock where book.book_id=stock.book_id and classification_id like #{classification_id} and book.name like '%${keyword}%' ORDER BY num ${sort_method} LIMIT ${(currentPage-1)*pageSize},${pageSize} </select>
使用这种类型的输入映射可以方便需要使用多个参数来调用sql语句的情况,只需要将参数封装起来成为一个类并将该类对象作为输入映射即可实现。
-
pojo包装对象类型
常用在需要使用多综合条件查询时,例如查询书籍详情时,基本信息条件是一种条件,可以根据书籍的基本信息查询,书籍交易/借阅记录同时也可以作为附加条件,根据借阅记录来筛选书籍。
包装对象 :需要在一个pojo对象中将另一个pojo对象作为属性值。
引用 : 同上面pojo对象引用相同,在mapper-config.xml进行声明。
示例代码
<select id="MYPOJO" parameterType="Pojo"> SELECT * FROM `user` WHERE username LIKE "%"#{user.username}"%" </select>
在末尾
#{user.username}
中,user表示输入映射Pojo对象中声明好的一个User类对象成员的变量名,username为User类对象的一个属性名。