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

MP条件构造器之常用功能详解(between、notBetween、like)

文章目录

        • between
          • 使用范围
          • 方法签名
          • 参数说明
          • 示例
            • 使用 `between` 设置指定字段的 BETWEEN 条件
            • 动态根据条件设置 `between` BETWEEN 条件
            • 动态设置 `between` 条件
        • notBetween
          • 使用范围
          • 方法签名
          • 参数说明
          • 示例
            • 使用 `notBetween` 设置指定字段的 NOT BETWEEN 条件
            • 动态根据条件设置 `notBetween` NOT BETWEEN 条件
        • like
          • 使用范围
          • 方法签名
          • 参数说明
          • 示例
            • 使用 `like` 设置指定字段的 LIKE 条件
            • 动态根据条件设置 `like` LIKE 条件

between

between 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的 BETWEEN 条件。

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置指定字段的 BETWEEN 条件
between(R column, Object val1, Object val2)

// 根据条件设置指定字段的 BETWEEN 条件
between(boolean condition, R column, Object val1, Object val2)

参数说明
  • column:数据库字段名或使用 Lambda 表达式的字段名。
  • val1:与字段名对应的第一个值,表示 BETWEEN 条件的起始值。
  • val2:与字段名对应的第二个值,表示 BETWEEN 条件的结束值。
  • condition:一个布尔值,用于控制是否应用这个 BETWEEN 条件。


示例
使用 between 设置指定字段的 BETWEEN 条件

查询年龄在 20 到 30 岁之间的用户。

普通 Wrapper (QueryWrapper):

// 使用 QueryWrapper 查询 age 在 20 到 30 之间的用户
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 20, 30);

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 使用 LambdaQueryWrapper 查询 age 在 20 到 30 之间的用户
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.between(User::getAge, 20, 30);

List<User> users = userMapper.selectList(queryWrapper);

生成的 SQL 语句:

SELECT * FROM user WHERE age BETWEEN 20 AND 30;

动态根据条件设置 between BETWEEN 条件

现在我们希望根据动态条件来设置 BETWEEN 条件。例如,如果条件成立,则查询年龄在 20 到 30 岁之间的用户。

动态设置 between 条件

普通 Wrapper (QueryWrapper):

Integer minAge = 20;
Integer maxAge = 30;
boolean hasAgeRange = minAge != null && maxAge != null;

// 使用 QueryWrapper 动态查询 age 在 minAge 和 maxAge 之间的用户(仅当 hasAgeRange 为 true 时才加入条件)
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between(hasAgeRange, "age", minAge, maxAge);

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

Integer minAge = 20;
Integer maxAge = 30;
boolean hasAgeRange = minAge != null && maxAge != null;

// 使用 LambdaQueryWrapper 动态查询 age 在 minAge 和 maxAge 之间的用户(仅当 hasAgeRange 为 true 时才加入条件)
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.between(hasAgeRange, User::getAge, minAge, maxAge);

List<User> users = userMapper.selectList(queryWrapper);

如果 minAge 为 20,maxAge** 为 30,生成的 SQL 语句如下:**

SELECT * FROM user WHERE age BETWEEN 20 AND 30;

如果 minAgemaxAgenull,生成的 SQL 语句如下:

SELECT * FROM user;


notBetween

notBetween 方法是 **MyBatis-Plus **中用于构建查询条件的另一个基本方法,它用于设置单个字段的 NOT BETWEEN 条件。


使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置指定字段的 NOT BETWEEN 条件
notBetween(R column, Object val1, Object val2)

// 根据条件设置指定字段的 NOT BETWEEN 条件
notBetween(boolean condition, R column, Object val1, Object val2)

参数说明
  • column:数据库字段名或使用 Lambda 表达式的字段名。
  • val1:与字段名对应的第一个值,表示 NOT BETWEEN 条件的起始值。
  • val2:与字段名对应的第二个值,表示 NOT BETWEEN 条件的结束值。
  • condition:一个布尔值,用于控制是否应用这个 NOT BETWEEN 条件。

示例
使用 notBetween 设置指定字段的 NOT BETWEEN 条件

查询年龄不在 20 到 30 岁之间的用户。

普通 Wrapper (QueryWrapper):

// 使用 QueryWrapper 查询 age 不在 20 到 30 之间的用户
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notBetween("age", 20, 30);

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 使用 LambdaQueryWrapper 查询 age 不在 20 到 30 之间的用户
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.notBetween(User::getAge, 20, 30);

List<User> users = userMapper.selectList(queryWrapper);

生成的 SQL 语句:

SELECT * FROM user WHERE age NOT BETWEEN 20 AND 30;

动态根据条件设置 notBetween NOT BETWEEN 条件

现在我们希望根据动态条件来设置 NOT BETWEEN 条件。例如,如果条件成立,则查询年龄不在 20 到 30 岁之间的用户。

普通 Wrapper (QueryWrapper):

Integer minAge = 20;
Integer maxAge = 30;
boolean hasAgeRange = minAge != null && maxAge != null;

// 使用 QueryWrapper 动态查询 age 不在 minAge 和 maxAge 之间的用户(仅当 hasAgeRange 为 true 时才加入条件)
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notBetween(hasAgeRange, "age", minAge, maxAge);

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

Integer minAge = 20;
Integer maxAge = 30;
boolean hasAgeRange = minAge != null && maxAge != null;

// 使用 LambdaQueryWrapper 动态查询 age 不在 minAge 和 maxAge 之间的用户(仅当 hasAgeRange 为 true 时才加入条件)
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.notBetween(hasAgeRange, User::getAge, minAge, maxAge);

List<User> users = userMapper.selectList(queryWrapper);

如果 minAge 为 20,maxAge** 为 30,生成的 SQL 语句如下:**

SELECT * FROM user WHERE age NOT BETWEEN 20 AND 30;

如果 minAgemaxAgenull,生成的 SQL 语句如下:

SELECT * FROM user;


like

like 方法是 **MyBatis-Plus **中用于构建模糊查询条件的基本方法之一,它用于设置单个字段的 LIKE 条件。

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置指定字段的 LIKE 条件
like(R column, Object val)

// 根据条件设置指定字段的 LIKE 条件
like(boolean condition, R column, Object val)

参数说明
  • column:数据库字段名或使用 Lambda 表达式的字段名。
  • val:与字段名对应的值,表示 LIKE 条件中的搜索值。
  • condition:一个布尔值,用于控制是否应用这个 LIKE 条件。

示例
使用 like 设置指定字段的 LIKE 条件

查询用户名中包含 “admin” 的用户。

普通 Wrapper (QueryWrapper):

// 使用 QueryWrapper 查询 username 包含 "admin" 的用户
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("username", "admin");

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 使用 LambdaQueryWrapper 查询 username 包含 "admin" 的用户
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(User::getUsername, "admin");

List<User> users = userMapper.selectList(queryWrapper);

生成的 SQL 语句:

SELECT * FROM user WHERE username LIKE '%admin%';

动态根据条件设置 like LIKE 条件

现在我们希望根据动态条件来设置 LIKE 条件。例如,如果条件成立,则查询用户名中包含 “admin” 的用户。

普通 Wrapper (QueryWrapper):

String username = "admin";
boolean hasUsername = username != null && !username.isEmpty();

// 使用 QueryWrapper 动态查询 username 包含 username 的用户(仅当 hasUsername 为 true 时才加入条件)
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like(hasUsername, "username", username);

List<User> users = userMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

String username = "admin";
boolean hasUsername = username != null && !username.isEmpty();

// 使用 LambdaQueryWrapper 动态查询 username 包含 username 的用户(仅当 hasUsername 为 true 时才加入条件)
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(hasUsername, User::getUsername, username);

List<User> users = userMapper.selectList(queryWrapper);

如果 username 为 “admin”,生成的 SQL 语句如下:

SELECT * FROM user WHERE username LIKE '%admin%';

如果 usernamenull 或空字符串,生成的 SQL 语句如下:

SELECT * FROM user;

http://www.kler.cn/a/284045.html

相关文章:

  • 测试工程师简历「精选篇」
  • 数字孪生在智慧能源项目中的关键作用,你了解多少?
  • C++中的栈(Stack)和堆(Heap)
  • 随手记:简单实现纯前端文件导出(XLSX)
  • C++ 数组与结构 编程练习
  • 【mySql 语句使用】
  • 为什么在JDBC中使用PreparedStatement?
  • HCIP笔记9-BGP(3)
  • Day51 | 117. 软件构建(拓扑排序)47. 参加科学大会 dijkstra(朴素版)
  • JavaScript 小测验 toString
  • 无人机之使用技巧篇
  • Tomcat Manager 上传 war 包大小的限制
  • SpringBoot配置MybatisPlus
  • Docker基本使用:根据mysql镜像创建mysql容器
  • 四、监控搭建-Prometheus-采集端批量部署
  • TCP/UDP的对比,粘包分包抓包,http协议
  • MYSQL集群技术
  • JavaScript 网页设计案例
  • 12、stm32通过dht11读取温湿度
  • Elasticsearch简单介绍
  • 智慧高校迎新服务平台的设计与实现---附源码92489
  • http方法调用接口
  • Django如何实现websocket
  • 【工作实践】MVEL 2.x语法指南
  • vscode在html中的使用
  • 多进程比多线程开销大的原因