Mybatis----Mapper.xml中的输入映射

6.输入映射

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

6.1 传递POJO的包装对象

6.1.1需求

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

6.1.2 定义包装类型POJO

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

6.1.3 映射文件mapper.xml

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

    <!-- 用户信息的综合查询 
    #{userCustom.sex}:取出POJO包装对象中性别值
    '${userCustom.username}':取出POJO包装对象中用户名称
    -->
    <select id="findUserList" parameterType="com.xjs.mybatis.po.UserQueryVo" resultType="com.xjs.mybatis.po.UserCustom">
        select * from user where user.sex=#{userCustom.sex} and user.username like '%${userCustom.username}%'
    </select>

6.1.4 mapper.java(dao接口)

    //用户信息的综合查询
    public List<UserCustom> findUserList(UserQueryVo userQueryVo)throws Exception;

6.1.5 测试代码

    //复杂查询
    @Test
    public void testFindUserList() throws Exception {
        SqlSession sqlSession=sqlSessionFactory.openSession();
        
        //创建UserMapper(dao接口)对象,mybatis自动生成dao接口实现类的代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        
        //创建包装对象 ,设置查询条件
        UserQueryVo userQueryVo=new UserQueryVo();
        UserCustom userCustom=new UserCustom();
        userCustom.setSex("1");
        userCustom.setUsername("小明");
        userQueryVo.setUserCustom(userCustom);
        //调用userMapper的方法
        List<UserCustom> list = userMapper.findUserList(userQueryVo);
        sqlSession.close();
        System.out.println(list);
    }

扩展类:

package com.xjs.mybatis.po;

/**
 * 用户的扩展类
 * @author hp
 *
 */
public class UserCustom extends User{

    //可以扩展用户的信息
}

结果:

...
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@5f3a4b84]
DEBUG [main] - ==>  Preparing: select * from user where user.sex=? and user.username like '%小明%' 
DEBUG [main] - ==> Parameters: 1(String)
DEBUG [main] - <==      Total: 3
...
[User [id=16, username=张小明, sex=1, birthday=null, address=河南郑州], User [id=22, username=陈小明, sex=1, birthday=null, address=河南郑州], User [id=25, username=陈小明, sex=1, birthday=null, address=河南郑州]]
原文地址:https://www.cnblogs.com/xjs1874704478/p/11240248.html