LambdaQueryWrapper
是 MyBatis Plus 中的一个功能,用于构建 lambda 表达式风格的查询条件,它提供了类型安全的条件构造器,可以减少编写字段名称的错误。它继承自 AbstractWrapper
类,提供了强大的条件构造能力,可以用于链式调用。
以下是一些 LambdaQueryWrapper
的常用方法:
-
eq(T column, Object val)
:等于=- 用于构造字段等于某个值的查询条件。
-
ne(T column, Object val)
:不等于<>- 用于构造字段不等于某个值的查询条件。
-
gt(T column, Object val)
:大于>- 用于构造字段大于某个值的查询条件。
-
ge(T column, Object val)
:大于等于>=- 用于构造字段大于等于某个值的查询条件。
-
lt(T column, Object val)
:小于<- 用于构造字段小于某个值的查询条件。
-
le(T column, Object val)
:小于等于<=- 用于构造字段小于等于某个值的查询条件。
-
like(T column, Object val)
:模糊查询LIKE- 用于构造字段模糊查询的条件。
-
notLike(T column, Object val)
:模糊查询NOT LIKE- 用于构造字段不满足模糊查询条件。
-
in(T column, Collection<?> coll)
:IN查询- 用于构造字段在指定集合中的查询条件。
-
notIn(T column, Collection<?> coll)
:NOT IN查询- 用于构造字段不在指定集合中的查询条件。
-
isNull(T column)
:字段IS NULL- 用于构造字段是NULL的查询条件。
-
isNotNull(T column)
:字段IS NOT NULL- 用于构造字段非NULL的查询条件。
-
orderBy(boolean condition, boolean isAsc, T... columns)
:排序- 用于构造排序条件,
isAsc
指定升序还是降序。
- 用于构造排序条件,
-
groupBy(T... columns)
:分组- 用于构造分组查询条件。
-
having(String sqlHaving, Object... params)
:分组条件- 用于设置 HAVING 关键字后面的条件。
-
or()
和and()
:连接OR和AND- 用于构造逻辑 OR 或 AND 之间的查询条件。
-
apply(String applySql, Object... value)
:直接拼接SQL- 允许用户向 WHERE 子句中直接添加SQL片段。
LambdaQueryWrapper
通常与 MyBatis Plus 的 IService
或 BaseMapper
接口的方法联合使用,来进行数据库的 CRUD 操作。例如:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三")
.ne(User::getAge, 25)
.like(User::getEmail, "test")
.orderByAsc(User::getAge);
List<User> users = userMapper.selectList(queryWrapper);
在上面的例子中,User::getName
是 Java 8 的方法引用语法,确保了类型安全,因为如果引用的字段名在实体类中不存在或者类型不匹配,那么在编译阶段就会报错。这样不仅代码可读性更好,而且减少了因字段名错误而引发的运行时错误。