zoukankan      html  css  js  c++  java
  • mybatis 传递pojo的包装对象

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

    一、自定义包装类型pojo

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

    比如说要包装用户的查询信息

    public class UserQueryVo {
        
        //所需要的查询条件
        private User user;
    }

    这样包装的话,如果User实体类型不能满足查询条件的话,就需要修改User,但是这个User有可能是生成工具生成的,不能随便修改,所以在包装类时,不要包装User类,可以包装User的扩展类

    创建一个User的扩展类

    public class UserExtend extends User {
    
    }

    然后再包装

    public class UserQueryVo {
        
        //查询用户条件
        private UserExtend userExtend;
        //查询订单条件
        private OrderExtend orderExtend;
    
        public UserExtend getUserExtend() {
            return userExtend;
        }
    
        public void setUserExtend(UserExtend userExtend) {
            this.userExtend = userExtend;
        }
    
        public OrderExtend getOrderExtend() {
            return orderExtend;
        }
    
        public void setOrderExtend(OrderExtend orderExtend) {
            this.orderExtend = orderExtend;
        }
    }
    View Code

    配置mapper.xml

        <select id="findUserlist" parameterType="com.xxx.mybatis.po.UserQueryVo" 
        resultType="com.xxx.mybatis.po.UserExtend">
            select * from t_user where sex = #{userExtend.sex} and userName LIKE CONCAT('%',#{userExtend.username},'%' )
        </select>

    mapper.java

    public List<UserExtend> findUserlist(UserQueryVo vo);

    测试代码

        @Test
        void testFindUserList() {
        
        UserMapper userMapper = sqlSessionFactory.openSession().getMapper(UserMapper.class);
    
        UserQueryVo queryVo=new UserQueryVo();
    
        UserExtend userExtend=new UserExtend();
        userExtend.setSex("0");
        userExtend.setUsername("小");
    
        queryVo.setUserExtend(userExtend);
    
        List<UserExtend> list = userMapper.findUserlist(queryVo);
        System.out.println(list);
        }
  • 相关阅读:
    summernote 上传图片到图片服务器的解决方案(springboot 成功)
    rabbitmq 命令行与控制台
    redis 集群
    rabbitmq快速安装(实测有效)(新版)
    设计模式-5适配器模式
    Nginx做缓存
    Redis的高可用
    正则表达式
    常用的实例场景(.net js jq)
    sentry的安装
  • 原文地址:https://www.cnblogs.com/WarBlog/p/14931420.html
Copyright © 2011-2022 走看看