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=河南郑州]]
  • 相关阅读:
    LintCode 17.子集
    JS时间操作
    Ajax总结
    Ajax请求文件下载操作失败的原因和解决办法
    遍历Map的几种方式
    java获取文件大小的方法
    Ajax详细介绍
    第31课
    30-React JSX IN DEPTH
    28-React state提升、组件组合或继承
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/11240248.html
Copyright © 2011-2022 走看看