6、Mybatis-Plus wrapper的使用

简介: 这篇文章详细介绍了Mybatis-Plus中Wrapper的使用,包括QueryWrapper和UpdateWrapper的基本概念、组装查询、排序、删除、修改条件的方法,以及如何设置条件优先级、组装SELECT子句和实现子查询等高级用法。

第一篇: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);
    }
相关文章
|
4月前
|
Java 数据库连接 数据库
Mybatis-plus中的QueryWrapper的多种用法!(总结)
Mybatis-plus中的QueryWrapper的多种用法!(总结)
562 0
|
2月前
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
92 3
|
XML Java 关系型数据库
【MyBatis】better-mybatis-generator 插件快速生成dao、pojo、xml教程
【MyBatis】better-mybatis-generator 插件快速生成dao、pojo、xml教程
305 0
|
SQL 前端开发 Oracle
MyBatis-Plus用法 真的很强大啊(二)
MyBatis-Plus用法 真的很强大啊(二)
81 0
|
Java 数据库连接 数据库
MyBatis - 三剑客之 Mybatis-Generator
MyBatis - 三剑客之 Mybatis-Generator
111 0
MyBatis - 三剑客之 Mybatis-Generator
|
XML Java 关系型数据库
利用org.mybatis.generator生成实体类
pringboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖: 2.编写generatorConfig.xml文件 (1)文件值指定连接mysql的信息 (2)指定生成的实体包信息 (3)指定生成的mapper包信息 (4)指定生成的xml资源文件信息 (5)添加需要生成的表信息
利用org.mybatis.generator生成实体类
|
XML Java 数据库连接
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(下)
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(下)
243 0
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(下)
|
Java 数据库连接 Maven
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(上)
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(上)
157 0
Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解(上)
|
SQL Java 数据库连接
Mybatis+0+null,小问题引发的血案
Mybatis+0+null,小问题引发的血案
175 0
|
Java 数据库连接 mybatis
Mybatis Generator的使用
在写代码过程中,常常要写一些简单的CURD操作,为了能够把时间用在业务逻辑上,看了Mybatis Generator生成工具,根据官网的文档,改成适合自己使用的生成器。 mybatis generator的配置文件 如下: <?xml version="1.
7116 0