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

MyBatis-Plus 条件构造器的使用(左匹配查询)

在上一篇文章中,我们已经介绍了 MyBatis-Plus 条件构造器,包括 QueryWrapperUpdateWrapper 的基本使用方法、常见查询条件(如等于、不等于、大于、小于)以及如何使用 Lambda 表达式来构建动态查询和更新条件。

在本文中,我们将进一步扩展 MyBatis-Plus 条件构造器 的使用,增加 左匹配查询like 查询的变体)功能,帮助开发者更好地构建复杂的查询条件。


1. 左匹配查询(likeLeft

在 SQL 中,左匹配查询(也称为 前缀模糊查询)通常用于查找以某个特定字符或子字符串开始的记录。例如,查找所有名字以 “J” 开头的用户。

在 MyBatis-Plus 中,QueryWrapper 提供了 likeLeft 方法来实现左匹配查询。它通过在 like 查询的模式中加上 % 来实现前缀匹配。

1.1 likeLeft 的作用

  • likeLeft 方法在查询条件中拼接 %,使得查询变成“以指定值开头”的模糊匹配。

    例如,查询所有以 “John” 开头的名字:"John%"

1.2 使用 likeLeft 进行左匹配查询

示例:使用 likeLeft 进行左匹配查询

假设有一个用户表 User,包含字段 nameage,我们希望查询所有名字以 John 开头的用户。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John");  // 查询名字以 "John" 开头的用户
List<User> users = userMapper.selectList(queryWrapper);

在这个例子中:

  • likeLeft("name", "John"):生成的 SQL 查询将是:

    SELECT * FROM user WHERE name LIKE 'John%';
    

    这将返回所有名字以 “John” 开头的用户。


2. 使用 QueryWrapperLambdaQueryWrapper 构建复杂查询

2.1 结合其他查询条件进行组合

likeLeft 可以与其他查询条件结合使用,构建更复杂的查询。例如,查询所有年龄大于 20 且名字以 “John” 开头的用户。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 20)  // 查询年龄大于 20
            .likeLeft("name", "John");  // 查询名字以 "John" 开头
List<User> users = userMapper.selectList(queryWrapper);

在这个例子中:

  • gt("age", 20):查询年龄大于 20 的用户。
  • likeLeft("name", "John"):查询名字以 “John” 开头的用户。

生成的 SQL 会是:

SELECT * FROM user WHERE age > 20 AND name LIKE 'John%';

2.2 使用 LambdaQueryWrapper 进行左匹配查询

QueryWrapper 类似,LambdaQueryWrapper 也支持 左匹配查询,并且通过 Lambda 表达式 来构建查询条件,提供了更好的类型安全。

示例:使用 LambdaQueryWrapper 进行左匹配查询
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.likeLeft(User::getName, "John");  // 查询名字以 "John" 开头的用户
List<User> users = userMapper.selectList(queryWrapper);

在这个例子中:

  • likeLeft(User::getName, "John"):通过 Lambda 表达式引用字段,构建前缀模糊查询,查询名字以 “John” 开头的用户。
注意:
  • LambdaQueryWrapper 提供了更加安全和易读的方式来构建查询条件,它可以避免直接拼接字符串时发生的字段拼写错误。

3. 其他常见查询条件的结合

3.1 使用 likeLeftlikeRight 结合

除了 likeLeft,MyBatis-Plus 还提供了 likeRight 方法用于 右匹配查询(后缀模糊查询)。你可以将它们与其他查询条件结合使用,构建更加灵活的查询。

示例:结合 likeLeftlikeRight
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John")   // 查询名字以 "John" 开头的用户
            .likeRight("email", "gmail.com");  // 查询邮箱以 "gmail.com" 结尾的用户
List<User> users = userMapper.selectList(queryWrapper);

生成的 SQL 查询为:

SELECT * FROM user WHERE name LIKE 'John%' AND email LIKE '%gmail.com';

3.2 结合 likeLeftin 条件

你还可以将 likeLeft 与其他条件,如 in,结合起来,进行复杂的条件查询。

示例:使用 likeLeftin 条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John")   // 查询名字以 "John" 开头的用户
            .in("age", 20, 25, 30);  // 查询年龄为 20、25 或 30 的用户
List<User> users = userMapper.selectList(queryWrapper);

生成的 SQL 查询为:

SELECT * FROM user WHERE name LIKE 'John%' AND age IN (20, 25, 30);

4. 总结

  • likeLeft:用于实现 左匹配查询,即查询以指定字符串开头的数据。
  • QueryWrapperLambdaQueryWrapper:都可以用于构建 左匹配查询LambdaQueryWrapper 提供了更强的类型安全性。
  • 多条件组合查询likeLeft 可以与其他查询条件(如 gtltin 等)结合使用,构建更复杂的查询。
  • 灵活的 SQL 构建:MyBatis-Plus 的条件构造器允许开发者通过链式调用和 Lambda 表达式来简洁地构建动态 SQL 查询,提升代码可读性和维护性。

通过 likeLeft 等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。 🚀


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

相关文章:

  • Windows零门槛部署DeepSeek大模型:Ollama+7B参数模型本地推理全攻略
  • alpine linux 系统最新版安装及使用教程
  • 【JAVA面试题】Spring、Spring MVC、Spring Boot、Spring Cloud的区别与联系
  • 2025 ubuntu24.04系统安装docker
  • 宠物医疗对接DeepSeek详细方案
  • C++中的 互斥量
  • DeepSeek开源周:五大创新项目详解
  • 自定义wordpress三级导航菜单代码
  • FPGA——4位全加器及3-8译码器的实现
  • 2025东方财富笔试考什么?cata能力测评攻略|答题技巧真题分享
  • STM32 两个单片机之间的通信
  • Predix:工业互联网浪潮中的领航者与破局者(工业4.0的长子)
  • SpringTask 引起的错误
  • Linux--基础命令3
  • <Rust><iced>基于rust使用iced构建GUI实例:图片浏览器
  • 安全检查之springboot 配置加密
  • 十大经典排序算法简介
  • nginx 配置403页面(已亲测)
  • leetcode 1328. 破坏回文串 中等
  • Minix OS的配置 SSH C程序编译