mybatis学习之输入映射

来源:互联网 发布:软件架构师 英文 编辑:程序博客网 时间:2024/05/29 02:53

我们可以通过parameterType来指定输入参数的类型,类型可以是简单类型,也可以是hashMap,也可以是包装类型(pojo)


传递pojo的包装对象

需求:
完成用户信息的综合查询,需要传入许多查询条件(可能包括用户信息、其他的信息如:商品和订单)
针对上面的需求,建议使用自定义的包装类型的pojo
在包装类型的pojo中,将复杂的查询条件包装进去
package pojo;/** * Created by Alex on 2017/6/20. */public class UserQueryVo {    //在这里包装所需要的查询条件    //用户查询条件    private UserCustom userCustom;    //还可以包装其他的查询条件,比如订单和商品    public UserCustom getUserCustom() {        return userCustom;    }    public void setUserCustom(UserCustom userCustom) {        this.userCustom = userCustom;    }}


定义映射文件Mapper.xml

在userMapper.xml中,定义用户数据的综合查询(查询条件复杂,通过高级查询来进行关联查询)
    <!--    用户信息的综合查询    #{userCustom.sex} : 取出pojo包装对象中性别的值    ${userCustom.username} : 取出pojo包装对象中用户名的值     -->    <select id="findUserList" parameterType="UserQueryVo"  resultType="UserCustom" >        select * from user  where user.sex = #{userCustom.sex} and user.username LIKE '%${userCustom.username}%'    </select>

定义接口类文件Mapper.java

在接口类userMapper.java中,定义接口方法:
//用户信息的综合查询    public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;

测试

加载junit,测试类中编写如下代码:
    @Test    public void testFindUserList() throws Exception {        SqlSession sqlSession = sqlSessionFactory.openSession();        //创建一个UserMapper的对象,mybatis自动生成mapper代理对象        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        //创建pojo包装对象        UserQueryVo userQueryVo = new UserQueryVo();        //创建pojo扩展对象        UserCustom userCustom = new UserCustom();        userCustom.setSex("1");        userCustom.setUsername("测试");        //将pojo扩展对象set进pojo包装对象        userQueryVo.setUserCustom(userCustom);        //调用UserMapper的方法        List<UserCustom> list = userMapper.findUserList(userQueryVo);        System.out.println(list);    }

可得结果
DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.DEBUG [main] - Class not found: org.jboss.vfs.VFSDEBUG [main] - JBoss 6 VFS API is not available in this environment.DEBUG [main] - Class not found: org.jboss.vfs.VirtualFileDEBUG [main] - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment.DEBUG [main] - Using VFS adapter org.apache.ibatis.io.DefaultVFSDEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojoDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojoDEBUG [main] - Reader entry: User.classDEBUG [main] - Reader entry: UserCustom.classDEBUG [main] - Reader entry: UserQueryVo.classDEBUG [main] - Listing file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojoDEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/User.classDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/User.classDEBUG [main] - Reader entry: ����   4 LDEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/UserCustom.classDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/UserCustom.classDEBUG [main] - Reader entry: ����   4 DEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/UserQueryVo.classDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/pojo/UserQueryVo.classDEBUG [main] - Reader entry: ����   4 DEBUG [main] - Checking to see if class pojo.User matches criteria [is assignable to Object]DEBUG [main] - Checking to see if class pojo.UserCustom matches criteria [is assignable to Object]DEBUG [main] - Checking to see if class pojo.UserQueryVo matches criteria [is assignable to Object]DEBUG [main] - PooledDataSource forcefully closed/removed all connections.DEBUG [main] - PooledDataSource forcefully closed/removed all connections.DEBUG [main] - PooledDataSource forcefully closed/removed all connections.DEBUG [main] - PooledDataSource forcefully closed/removed all connections.DEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapperDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapperDEBUG [main] - Reader entry: UserMapper.classDEBUG [main] - Reader entry: UserMapper.xmlDEBUG [main] - Listing file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapperDEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapper/UserMapper.classDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapper/UserMapper.classDEBUG [main] - Reader entry: ����   4    findUserList $(Lpojo/UserQueryVo;)Ljava/util/List; DEBUG [main] - Find JAR URL: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapper/UserMapper.xmlDEBUG [main] - Not a JAR: file:/E:/%e5%a4%a7%e5%ad%a6%e9%a1%b9%e7%9b%ae/IDEA%20Project/mybatis/out/production/mybatis/mapper/UserMapper.xmlDEBUG [main] - Reader entry: <?xml version="1.0" encoding="UTF-8" ?>DEBUG [main] - Checking to see if class mapper.UserMapper matches criteria [is assignable to Object]DEBUG [main] - Opening JDBC ConnectionDEBUG [main] - Created connection 246399377.DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@eafc191]DEBUG [main] - ==>  Preparing: select * from user where user.sex = ? and user.username LIKE '%测试%' DEBUG [main] - ==> Parameters: 1(String)DEBUG [main] - <==      Total: 6[User{id=29, username='测试测试1', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南益阳'}, User{id=30, username='测试测试2', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南长沙'}, User{id=31, username='测试测试3', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南张家界'}, User{id=32, username='测试测试3', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南岳阳'}, User{id=33, username='测试测试4', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南娄底'}, User{id=34, username='测试测试5', sex='1', birthday=Mon Jun 19 00:00:00 CST 2017, address='湖南涟源'}]Process finished with exit code 0


阅读全文
0 0
原创粉丝点击