mybatis系列-06-输入映射

  通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型

6.1     传递pojo的包装对象

6.1.1     需求

  完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)

6.1.2     定义包装类型pojo

  针对上边需求,建议使用自定义的包装类型的pojo。

  在包装类型的pojo中将复杂的查询条件包装进去。

public class UserQueryVo {

   //传入多个id
   private List<Integer> ids;

   //在这里包装所需要的查询条件
   //用户查询条件
   private User userCustom;

6.1.3     mapper.xml

  在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)。

   <!-- 用户信息综合查询
   #{userCustom.sex}:取出pojo包装对象中性别值
   ${userCustom.username}:取出pojo包装对象中用户名称
    -->
   <select id="findUserList" parameterType="UserQueryVo" resultType="User">
      SELECT * FROM USER WHERE sex = #{userCustom.sex} AND username LIKE '%${userCustom.username}%'
   </select>

6.1.4     mapper.java

public List<User> findUserList(UserQueryVo userQueryVo);

6.1.5     测试代码

   @Test
    public void testFindUserCount(){

        SqlSession sqlSession = sqlSessionFactory.openSession();

        //创建UserMapper对象,mybatis自动生成mapper代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //创建包装对象,设置查询条件
        UserQueryVo userQueryVo = new UserQueryVo();
        User user = new User();
        user.setId(24);
        user.setSex("1");
        user.setUsername("张");
        userQueryVo.setUserCustom(user);

        //调用userMapper的方法
        List<User> list = userMapper.findUserList(userQueryVo);
        System.out.println(list.size());
}
原文地址:https://www.cnblogs.com/ChinaHook/p/5532435.html