QueryWrapper 与 LambdaQueryWrapper 有什么区别?
时间: 2024-06-18 13:05:54 浏览: 214
mybatis plus条件构造器queryWrapper、updateWrapper
QueryWrapper 和 LambdaQueryWrapper 都是 MyBatis-Plus 提供的实现了 Wrapper 接口的查询构造器,它们可以用于构建复杂的 SQL 查询语句。它们之间最大的区别在于构造条件的方式不同。
QueryWrapper 使用的是链式调用的方式构建查询条件,它的语法类似于 MyBatis 的 XML 配置文件中的标签。例如,以下代码是使用 QueryWrapper 构建查询条件的示例:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").ge("age", 18).orderByDesc("age");
List<User> userList = userMapper.selectList(queryWrapper);
```
而 LambdaQueryWrapper 使用的是 Lambda 表达式的方式构建查询条件,它的语法更加简洁直观,也更加符合 Java 语言的特点。例如,以下代码是使用 LambdaQueryWrapper 构建查询条件的示例:
```
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "张三").ge(User::getAge, 18).orderByDesc(User::getAge);
List<User> userList = userMapper.selectList(lambdaQueryWrapper);
```
综上所述,LambdaQueryWrapper 更加简洁、直观,并且可以避免手写 SQL 语句时出现的一些常见错误。但是需要注意的是,LambdaQueryWrapper 的性能可能会略低于 QueryWrapper,因为 Lambda 表达式需要通过反射来解析成 SQL 语句。因此,在对性能要求较高的场景下,建议使用 QueryWrapper。
阅读全文