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

JavaWeb - Mybatis-Plus - 条件构造器

MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。

条件判断:Wrapper 方法通常接受一个 boolean 类型的参数,用于决定是否将该条件加入到最终的 SQL 中。例如:

queryWrapper.like(StringUtils.isNotBlank(name), Entity::getName, name)

.eq(age != null && age >= 0, Entity::getAge, age);

默认行为:如果某个方法没有显式提供 boolean 类型的参数,则默认为 true,即条件总是会被加入到 SQL 中。

泛型参数:Wrapper 类是泛型类,其中 Param 通常指的是 Wrapper 的子类实例,如 QueryWrapper、UpdateWrapper 等。

字段引用:在 LambdaWrapper 中,R 代表的是一个函数,用于引用实体类的属性,例如 Entity::getId。而在普通 Wrapper 中,R 代表的是数据库字段名。

字段名注意事项:当 R 具体类型为 String 时,表示的是数据库字段名,而不是实体类数据字段名。如果字段名是数据库关键字,需要使用转义符包裹。

集合参数:如果方法的参数是 Map 或 List,当它们为空时,对应的 SQL 条件不会被加入到最终的 SQL 中。

学习资源:对于不熟悉的函数式编程概念,可以参考学习资源进行学习。

 allEq

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper
方法签名

// 设置所有字段的相等条件,如果字段值为null,则根据null2IsNull参数决定是否设置为IS NULL

allEq(Map<String, Object> params)

allEq(Map<String, Object> params, boolean null2IsNull)

allEq(boolean condition, Map<String, Object> params, boolean null2IsNull)

// 设置所有字段的相等条件,通过filter过滤器决定哪些字段应该被包含,如果字段值为null,则根据null2IsNull参数决定是否设置为IS NULL

allEq(BiPredicate<String, Object> filter, Map<String, Object> params)

allEq(BiPredicate<String, Object> filter, Map<String, Object> params, boolean null2IsNull)

allEq(boolean condition, BiPredicate<String, Object> filter, Map<String, Object> params, boolean null2IsNull)

参数说明
  • params:一个 Map,其中 key 是数据库字段名,value 是对应的字段值。
  • null2IsNull:如果设置为 true,当 Map 中的 value 为 null 时,会调用 isNull 方法;如果设置为 false,则会忽略 value 为 null 的键值对。
  • filter:一个 BiPredicate,用于过滤哪些字段应该被包含在查询条件中。
  • condition:一个布尔值,用于控制是否应用这些条件。

eq

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

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

// 设置指定字段的相等条件
eq(R column, Object val)

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

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

ne

用于设置单个字段的不相等条件。(其他同eq)

gt

用于设置单个字段的大于条件。(其他同eq)

注意事项

  • gt 方法适用于数值型字段,对于字符串等非数值型字段,使用 gt 可能会导致不期望的结果或错误。
  • 在使用 gt 方法时,确保 val 参数的类型与字段类型相匹配,以避免类型转换错误。
  • 如果需要根据某些条件动态添加大于条件,可以使用带有 condition 参数的重载方法。


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

相关文章:

  • Gin路由深入
  • 详细解析STM32 GPIO引脚的8种模式
  • 第8章 硬件维护-8.6 产品变更管理(PCN)
  • BERT模型中的多头注意力机制详解
  • Android 使用Retrofit 以纯二进制文件流上传文件
  • [前端面试]HTML AND CSS
  • 【机器学习】高斯过程的基本概念和应用领域以及在python中的实例
  • vue原理分析(十)研究new Vue()中的initEvents
  • AuthenticationProvider在spring security的作用和触发点
  • 点亮第一盏LED灯 3), LED灯GPIO引脚设置
  • 浅析 MyBatis 中的连接池和缓存
  • Redis 持久化机制详解
  • OpenCV结构分析与形状描述符(12)椭圆拟合函数fitEllipseAMS()的使用
  • 六种远程控制电脑的方法,第二种方法再适合企业不过了
  • 【python计算机视觉编程——7.图像搜索】
  • 苹果宣布iOS 18正式版9月17日推送:支持27款iPhone升级
  • git为不同的项目设置不同的提交作者
  • 严重干扰的验证码识别系统源码分享
  • spark.sql
  • FaskAPI Web学习
  • 动态规划算法之斐波那契数列详细解读(附带Java代码解读)
  • 陈坤2024行走的力量 走向山野感受距离自然更近的地方
  • 9月→2024年计算机与信息安全国际会议
  • 如何读.Net Framework 的源码?
  • 观众登记2025中国(深圳)国际智能手机供应链展览会
  • 数据分析与挖掘课程相关资源