Wrappers原来这么好用

Wrappers原来这么好用在 MyBatis Plus 中 Wrappers 是一个用于构建条件查询的工具类

大家好,欢迎来到IT知识分享网。

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

前言

在 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] 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/157652.html

(0)
上一篇 2025-01-29 14:00
下一篇 2025-01-29 14:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信