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

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 等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。 🚀

相关文章:

  • 使用jacob进行word操作
  • docker:Dockerfile案例之自定义centos7镜像
  • ESP8266连接网络实时上传数据
  • 基于Qwen-VL的手机智能体开发
  • 达梦适配记录-检查服务器
  • Linux网络相关内容与端口
  • 【人工智能】异构算力重构AIGC | 蓝耘智算平台部署通义万相2.1文生图技术全解析
  • RocketMQ顺序消费机制
  • 智慧水务新时代:1.05亿项目引领的数字化浪潮
  • 从“0”开始入门PCB之(5)完结篇!--快速入门原理图DRC,PCB的符号与布局,2D与3D效果,PCB的图层和布线,PCB板框
  • 备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器
  • 深入探索WebGL:解锁网页3D图形的无限可能
  • AI控制游戏 -- 开源框架来了!
  • 电力MOSFET的输出特性与转移特性
  • 【基于手势识别的音量控制系统】
  • Kali GRUB 修复
  • 19c rac-expdp备份异常处理
  • 使用Perl和库WWW::Curl的爬虫程序
  • 解锁数据潜能,永洪科技以数据之力简化中粮可口可乐决策之路
  • 001-Boost消息队列的使用
  • 佛山建设企业网站/舆情信息在哪里找
  • 搜索引擎优化与推广的产生及发展/汕头seo优化
  • 俄语培训网站建设/seo是什么服
  • 网站特效网/百度推广中心
  • 示范校建设信息化成果网站/福建省人民政府门户网站
  • 深圳响应式网站建设公司/东莞推广