通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型
1.传递pojo的包装类型
(1)需求:完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)
(2)定义包装类型pojo
针对上边需求,建议使用自定义的包装类型的pojo,在包装类型的pojo中将复杂的查询条件包装进去
package cn.itcast.mybatis.po;
/**
* 用户的包装类型
* @author Administrator
*
*/
public class UserQueryVo {
//在这里包装所需要的查询条件
//用户查询条件
private UserCustom userCustom;
public UserCustom getUserCustom() {
return userCustom;
}
public void setUserCustom(UserCustom userCustom) {
this.userCustom = userCustom;
}
//可以包装其他的查询条件,订单、商品
}
(3)mapper.xml
在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)
<!-- 用户信息综合查询
#{userCustom.sex}:取出pojo中包装对象中性别值
%${userCustom.username}%:取出pojo中包装对象中用户名称
-->
<select id="findUserList" parameterType="cn.itcast.mybatis.po.UserQueryVo" resultType="cn.itcast.mybatis.po.UserCustom">
select * from user where user.sex=#{userCustom.sex} AND user.username LIKE '%${userCustom.username}%'
</select>
(4)mapper.java
//用户信息综合查询
public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;