LambdaQueryWrapper和QueryWrapper的区别
时间: 2023-07-25 14:22:17 浏览: 175
LambdaQueryWrapper和QueryWrapper是MyBatis-Plus中的两种查询构造器(Wrapper),它们的作用都是用于构建SQL查询条件。
区别如下:
1. LambdaQueryWrapper使用Lambda表达式,可以更加方便地进行条件构造,避免手写字符串拼接出错的风险;而QueryWrapper使用链式调用,需要手写字符串拼接条件。
2. LambdaQueryWrapper在编译期就能够检查Lambda表达式的正确性,而QueryWrapper需要在运行时才能检查字符串拼接的正确性。
3. LambdaQueryWrapper支持实体属性进行条件构造,而QueryWrapper只能使用数据库列名。
4. 在性能上,LambdaQueryWrapper相对QueryWrapper更加高效,因为LambdaQueryWrapper使用了缓存,避免了每次构造条件都要解析Lambda表达式的开销。
总之,使用LambdaQueryWrapper能够更加方便、安全、高效地构造SQL查询条件。
相关问题
LambdaQueryWrapper和QueryWrapper区别
LambdaQueryWrapper和QueryWrapper都是MyBatis-Plus框架中的查询封装类,用于构建查询条件。
QueryWrapper是基于字符串的方式来构建查询条件,使用起来相对较繁琐。例如,要构建一个查询条件为age大于等于18的查询语句,可以使用如下代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
```
而LambdaQueryWrapper则是基于Lambda表达式的方式来构建查询条件,使用起来更加简洁和直观。同样的查询条件,使用LambdaQueryWrapper可以写成以下形式:
```java
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.ge(User::getAge, 18);
```
由于LambdaQueryWrapper使用了Lambda表达式,可以直接引用实体类的属性名,避免了手写字符串的问题,并且在编译期间可以进行类型检查,减少了一些错误发生的可能性。同时,LambdaQueryWrapper还提供了更加丰富的查询方法,如eq、gt、lt等,方便进行复杂的查询操作。
总的来说,LambdaQueryWrapper相比QueryWrapper更加简洁、直观,并且具有更好的类型安全性。因此,在使用MyBatis-Plus框架时,推荐使用LambdaQueryWrapper来构建查询条件。
lambdaQueryWrapper和QueryWrapper 区别和优缺点
lambdaQueryWrapper和QueryWrapper都是MyBatis-Plus中的查询构造器,它们的主要区别在于使用方式不同。QueryWrapper使用链式调用的方式构建查询条件,而lambdaQueryWrapper则使用Lambda表达式的方式构建查询条件。相比较而言,lambdaQueryWrapper更加简洁明了,代码可读性更高,但是QueryWrapper的可扩展性更强,可以更灵活地构建复杂的查询条件。因此,在选择使用哪种查询构造器时,需要根据具体的业务需求和开发习惯进行选择。