当前位置: 首页 > news >正文

6、Mybatis-Plus wrapper的使用

第一篇:1、Mybatis-Plus 创建SpringBoot项目
第二篇:2、Mybatis-Plus 测试增、删、改、查
第三篇:3、Mybatis-Plus 自定义sql语句
第四篇:4、Mybatis-Plus 通用service的操作
第五篇:5、Mybatis-Plus 常用注解

文章目录

  • 1、wapper的介绍
  • 2、QueryWrapper(组装查询条件)
  • 3、QueryWrapper(组装排序条件)
  • 4、QueryWrapper(组装删除条件)
  • 5、QueryWrapper(信息的修改)
  • 6、QueryWrapper(条件的优先级)
  • 7、QueryWrapper(组装select子句)
  • 8、QueryWrapper(实现子查询)
  • 8、QueryWrapper(UpdateWrapper)

1、wapper的介绍

在这里插入图片描述
介绍:

  • Wrapper : 条件构造抽象类,最顶端父类
  • AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
  • QueryWrapper : 查询条件封装
  • UpdateWrapper : Update 条件封装
  • AbstractLambdaWrapper : 使用Lambda 语法
  • LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper
  • LambdaUpdateWrapper : Lambda 更新封装Wrapper

2、QueryWrapper(组装查询条件)

//条件构造器
    @Test
    public void test01(){
        /**
         * 查询用户名包含a,年龄在20到30之间,并且邮箱不为null的用户信息
         *
         * SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user
         * WHERE is_deleted=0 AND
         * (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("user_name","三")
                    .between("age",20,25)
                    .isNotNull("email");
        List<User> list = userMapper.selectList(queryWrapper);
        list.forEach(System.out::println);
    }

3、QueryWrapper(组装排序条件)

@Test
    public void test02(){
        /**
         * //按年龄降序查询用户,如果年龄相同则按id升序排列
         * //SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 ORDER BY age DESC,id ASC
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("age")
                .orderByAsc("id");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);

    }

4、QueryWrapper(组装删除条件)

@Test
    public void test03(){
        /**
         * 删除email为空的用户
         *  UPDATE t_user SET is_deleted=1 WHERE is_deleted=0 AND (email IS NULL)
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.isNull("email");
        int rs = userMapper.delete(queryWrapper);
        System.out.println(rs);
    }

5、QueryWrapper(信息的修改)

@Test
    public void test04(){
        /**使用queryWrapper实现用户信息的修改
         * 将(年龄大于20并且用户名中包含有a)或邮箱为null的用户信息修改
         * UPDATE t_user SET user_name=?, age=? WHERE is_deleted=0 AND (age > ? AND user_name LIKE ? OR email IS NULL)
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age",20)
                .like("user_name","a")
                .or()
                .isNull("email");
        User user = new User();
        user.setName("孙悟空");
        user.setAge(32);
        int rs = userMapper.update(user,queryWrapper);
        System.out.println(rs);
    }

6、QueryWrapper(条件的优先级)

@Test
    public void test05(){
        /**
         * 条件的优先级
         * 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
         * lambda中的条件优先执行
         * UPDATE t_user SET user_name=?, age=?, email=? WHERE is_deleted=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("user_name","a")
                .and(i->i.gt("age",20).or().isNull("email"));
        User user = new User();
        user.setName("猪八戒");
        user.setAge(32);
        user.setEmail("zbj@qq.com");
        int rs = userMapper.update(user,queryWrapper);
        System.out.println(rs);
    }

7、QueryWrapper(组装select子句)

@Test
    public void test06(){

        /**
         * 查询用户信息的username、age和email字段
         * SELECT user_name,age,email FROM t_user WHERE is_deleted=0
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("user_name","age","email");
       List<Map<String,Object>> maps =  userMapper.selectMaps(queryWrapper);
       maps.forEach(System.out::println);
    }

8、QueryWrapper(实现子查询)

@Test
    public void test07(){
        /**
         *查询uid小于等于100的用户信息
         * SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 AND (uid IN (select uid from t_user where uid <= 100))
         */
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.inSql("uid","select uid from t_user where uid <= 100");
        List<User> list = userMapper.selectList(queryWrapper);
        list.forEach(System.out::println);

    }

8、QueryWrapper(UpdateWrapper)

@Test
    public void test08(){

        /**
         * 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
         * UPDATE t_user SET user_name=?,email=? WHERE is_deleted=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
         */
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.like("user_name","a")
                .and(i-> i.gt("age",20).or().isNull("email"));
        updateWrapper.set("user_name","唐僧").set("email","tangseng@qq.com");
        int rs = userMapper.update(null,updateWrapper);
        System.out.println(rs);
    }

相关文章:

  • 基于Web的爬虫系统设计与实现
  • Kubernets---配置 Pod 使用投射卷作存储
  • springcloud和分布式微服务学习笔记
  • 【“在路上”疫情信息检测】
  • `算法知识` 模意义下的乘法逆元
  • 微信小程序 | 游戏开发之接宝石箱子游戏
  • 丙烯酰氧乙基三甲基氯化铵(DAC)接枝聚苯乙烯伯胺微球微粒/聚苯乙烯包覆硅胶复合微球
  • 拿下Transformer
  • WPS-系统右键:开启后无法显示
  • C++学习笔记(1)--- 常量、数据类型、运算符
  • AI在工业机器人系统中的应用
  • mybatis一级缓存、二级缓存的意义是什么?
  • 在Github上封神的JDK源码,看完竟吊打了面试官,厉害了
  • 拿捏了,阿里2022最新JDK源码深度解析小册,Github全站热榜第二
  • 前端开发:JS中向对象中添加对象的方法
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017届校招提前批面试回顾
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript 奇技淫巧
  • JAVA并发编程--1.基础概念
  • k8s 面向应用开发者的基础命令
  • 笨办法学C 练习34:动态数组
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于web的全景—— Pannellum小试
  • 利用DataURL技术在网页上显示图片
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 入门到放弃node系列之Hello Word篇
  • 使用 Docker 部署 Spring Boot项目
  • 算法-图和图算法
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 函数计算新功能-----支持C#函数
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #pragam once 和 #ifndef 预编译头
  • (1)(1.9) MSP (version 4.2)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6)STL算法之转换
  • (笔试题)分解质因式
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)四层和七层负载均衡的区别
  • (转)详解PHP处理密码的几种方式
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core中的去虚
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET学习教程二——.net基础定义+VS常用设置