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
参数的重载方法。