输入映射
通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。
传递pojo的包装对象
需求
完成用户信息的综合查询,需要传入很多的查询条件(可能包括用户信息、其他信息,比如商品、订单的)
定义包装类型pojo
针对上面的需求,建议使用自定义的包装类型的pojo
在包装类型的pojo中将复杂的查询条件包装进去。
映射文件
mapper.xml
在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询。)
<!-- 用户信息综合查询
#{userCustom.sex}:取出pojo包装对象中性别值
-->
<select id="findUserList" parameterType="cn.iven.mybatis.po.UserQueryVo" resultType="cn.iven.mybatis.po.UserCustom">
SELECT * FROM user WHERE `user`.sex = #{userCustom.sex} AND `user`.username LIKE '%${userCustom.username}%'
</select>
mapper.java
//用户信息的综合查询
public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;
测试代码
@Test
public void testFindUserList() throws Exception{
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//创建包装对象,设置查询条件
UserQueryVo userQueryVo = new UserQueryVo();
UserCustom userCustom = new UserCustom();
userCustom.setSex("1");
userCustom.setUsername("张三丰");
userQueryVo.setUserCustom(userCustom);
List<UserCustom> list = userMapper.findUserList(userQueryVo);
//sqlSession.close();
System.out.println(list);
}