Wrappers原来这么好用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

在 MyBatis-Plus 中,Wrappers 是一个用于构建条件查询的工具类。通过 Wrappers 类,可以方便地构建各种查询条件,例如等于、不等于、大于、小于、模糊匹配等条件。

Wrappers 类提供了一系列静态方法来创建不同类型的查询条件,常用的方法包括:

  • Wrappers.<T>query():创建一个空的查询条件。
  • Wrappers.<T>lambdaQuery():创建一个 LambdaQueryWrapper 对象,用于使用 Lambda 表达式构建查询条件。
  • Wrappers.<T>update():创建一个 UpdateWrapper 对象,用于构建更新操作的条件。
  • Wrappers.<T>lambdaUpdate():创建一个 LambdaUpdateWrapper 对象,用于使用 Lambda 表达式构建更新操作的条件。

通过使用 Wrappers 类,可以使得 MyBatis-Plus 的条件构造更加灵活和易用。

1、eq(column, value)

等于指定值

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery().eq(Student::getStuAge, 24);
//相当于sql语句中的“=”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age = 24)]

2、ne(column, value)

不等于指定值

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery().ne(Student::getStuAge, 1);
//相当于sql语句中的“<>”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age <> 1)]

3、ne(boolean condition, R column, Object val)

不等于指定值

condition:为true,条件生效;为false,条件忽略.

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery().ne(false,Student::getStuAge, 1);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student]

4、gt(column, value)、ge(column, value)、lt(column, value)、le(column, value)

分别是大于指定值、大于等于指定值、小于指定值、小于等于指定值

以下只以le(column, value)做测试,其他类似

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery().le(Student::getStuAge, 100);
//相当于sql语句中的“<=”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age <= 100)]

5、between(column, value1, value2)

在两个值之间

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
    .between(Student::getStuAge, 20,100);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age BETWEEN 20 AND 100)]

6、like(column, value)、likeLeft(column, value)、likeRight(column, value)

模糊匹配指定值

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .like(Student::getStuName, "张");
//相当于sql语句中的“%张%”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_name LIKE '%张%')]

左匹配(右匹配类似)

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .likeLeft(Student::getStuName, "张");
//相当于sql语句中的“%张”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_name LIKE '%张')]

7、in(column, values)、in(column, coll)、notIn(column, values)

在指定值列表中

第一种in(column, values):第二个参数为可变参数

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .in(Student::getStuAge, 1,24,5,34);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age IN (1,24,5,34))]

第二种in(column, coll):第二个参数为集合

List<Integer> integers = new ArrayList<>();
Collections.addAll(integers, 1, 24, 5, 34);
LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
    .in(Student::getStuAge, integers);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age IN (1,24,5,34))]

notIn类似

8、isNull(column)、isNotNull(column)

判断列的值是否(不)为 null

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .isNull(Student::getBirthDate);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (birth_date IS NULL)]

9、or()

或者

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .eq(Student::getStuAge,24)
                .or()
                .eq(Student::getStuName,"张三");
//相当于sql语句中的“or”,sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age = 24 OR stu_name = "张三")]

10、groupBy(column)

分组

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .select(Student::getBirthDate)
                .groupBy(Student::getBirthDate);
//sql:      [SELECT birth_date FROM student GROUP BY birth_date]

11、orderByDesc(column)

降序

LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .eq(Student::getStuAge, 24)
                .orderByDesc(Student::getId);
//sql:      [SELECT id,stu_name,stu_age,birth_date FROM student WHERE (stu_age = 24) ORDER BY id DESC]
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值