MyBatis-Plus中的AbstractLambdaWrapper
一、QueryWrapper和LambdaQueryWrapper有什么区别
1)QueryWrapper 和 LambdaQueryWrapper 都是 MyBatis-Plus(一个用于简化 MyBatis 操作的框架)中的查询条件构建器,用于构建数据库查询条件。
它们的主要区别在于语法和类型安全性:
2)QueryWrapper:
QueryWrapper 是 MyBatis-Plus 3.x 版本中的查询条件构建器。它使用类似于传统 MyBatis 查询的方法,即使用字符串指定列名和条件,如 eq(等于)、ne(不等于)、gt(大于)、lt(小于)等。这些方法接受字符串参数,可以构建灵活的查询条件。
示例使用 QueryWrapper 的查询条件:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 25)
.like("name", "John")
.between("salary", 3000, 5000);
List<User> users = userMapper.selectList(wrapper);
3)LambdaQueryWrapper:
LambdaQueryWrapper 是 MyBatis-Plus 3.4.0 版本中引入的,它提供了一种更加类型安全的查询条件构建方式,使用 Lambda 表达式来指定列和条件。这意味着您可以直接使用实体类的属性而不需要硬编码列名,并且编译器可以帮助您捕获拼写错误或类型不匹配的问题。
示例使用 LambdaQueryWrapper 的查询条件:
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 25)
.like(User::getName, "John")
.between(User::getSalary, 3000, 5000);
List<User> users = userMapper.selectList(wrapper);
4)主要区别总结如下:
QueryWrapper使用字符串指定列名,不具备类型安全性,容易出现拼写错误或类型不匹配的问题。LambdaQueryWrapper使用 Lambda 表达式指定列名,具备类型安全性,可以避免拼写错误和类型不匹配的问题。
一般来说,如果您使用 MyBatis-Plus 3.4.0 或更高版本,推荐使用 LambdaQueryWrapper,因为它提供更好的类型安全性和可维护性。如果使用较早的版本,您可以继续使用 QueryWrapper。

浙公网安备 33010602011771号