LambdaUpdateWrapper
和LambdaQueryWrapper
是MyBatis-Plus中用于构建SQL操作的两个重要工具类,它们都利用Lambda表达式来提供类型安全的条件构建。尽管它们在语法和使用方式上相似,但在用途和功能上存在明显差异。
1. 用途
-
LambdaQueryWrapper
:用于构建查询操作的条件。它帮助你以类型安全的方式构建复杂的查询条件,适用于SELECT
语句。 -
LambdaUpdateWrapper
:用于构建更新操作的条件和设置更新的字段。它不仅帮助你构建更新条件,还允许你指定哪些字段需要更新,适用于UPDATE
语句
2. 主要方法
-
LambdaQueryWrapper
:-
eq
、ne
、gt
、lt
、ge
、le
:用于构建等于、不等于、大于、小于、大于等于、小于等于条件。 -
like
、notLike
:用于构建模糊查询条件。 -
and
、or
:用于组合多个条件。 -
orderByAsc
、orderByDesc
:用于添加排序条件。 -
select
:用于选择特定的字段。
-
-
LambdaUpdateWrapper
:-
eq
、ne
、gt
、lt
、ge
、le
:用于构建更新条件。 -
set
:用于设置更新的字段和值。 -
and
、or
:用于组合多个条件。
-
3. 使用场景
-
LambdaQueryWrapper
:当你需要构建复杂的查询条件时使用。例如,根据多个字段进行查询、模糊查询、排序等。 -
LambdaUpdateWrapper
:当你需要构建更新操作的条件并指定更新的字段时使用。例如,根据某些条件更新记录的特定字段。
4. 示例代码
-
LambdaQueryWrapper
:java复制
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(User::getName, "张").ge(User::getAge, 18); List<User> users = userMapper.selectList(queryWrapper);
-
LambdaUpdateWrapper
:java复制
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(User::getAge, 25).eq(User::getName, "张三"); userMapper.update(null, updateWrapper);
总结
-
LambdaQueryWrapper
:用于构建查询条件,适用于SELECT
语句。 -
LambdaUpdateWrapper
:用于构建更新条件和设置更新字段,适用于UPDATE
语句。
两者都通过Lambda表达式提供类型安全的条件构建,避免了手动拼接字符串可能带来的错误,提高了代码的可读性和安全性。