zoukankan      html  css  js  c++  java
  • 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=河南郑州]]
  • 相关阅读:
    习题13
    可变不可变与深浅拷贝
    ORACLE服务监听器启动不了
    oracle客户端连接失败问题解决
    安家啦
    PHP常用函数
    程序员,你不是猩猩,你应该是苍蝇。
    Ajax文本文件静态分页分页
    实用的JavaScript相册程序。原创在原创中成长。
    【屌丝的逆袭系列】从可执行二进制文件中提取MIDI数据 脱PEBundle 0.2 3.x > Jeremy Collake壳并提取MID数据
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/11240248.html
Copyright © 2011-2022 走看看