您的位置:首页 > 娱乐 > 八卦 > 日照seo服务公司_微信小程序分销系统_石家庄网站建设_天津百度seo排名优化软件

日照seo服务公司_微信小程序分销系统_石家庄网站建设_天津百度seo排名优化软件

2025/3/6 21:27:58 来源:https://blog.csdn.net/u012561308/article/details/145924786  浏览:    关键词:日照seo服务公司_微信小程序分销系统_石家庄网站建设_天津百度seo排名优化软件
日照seo服务公司_微信小程序分销系统_石家庄网站建设_天津百度seo排名优化软件

在上一篇文章中,我们已经介绍了 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 等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。 🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com