LambdaQueryWrapper与QueryWrapper的应用场景
时间: 2023-10-12 09:09:08 浏览: 40
LambdaQueryWrapper和QueryWrapper是MyBatis-Plus中的两个查询构造器,它们的应用场景如下:
1. LambdaQueryWrapper
LambdaQueryWrapper是基于Lambda表达式的查询构造器,使用Lambda表达式可以更加方便地创建查询条件,避免了手写字符串拼接的繁琐和容易出错的问题。LambdaQueryWrapper的应用场景如下:
(1)根据实体类属性查询数据,如:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三");
List<User> userList = userMapper.selectList(wrapper);
```
(2)根据多个实体类属性查询数据,如:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三").eq(User::getAge, 18);
List<User> userList = userMapper.selectList(wrapper);
```
(3)根据条件进行分组、排序等操作,如:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User::getAge, User::getSex).groupBy(User::getAge).orderByDesc(User::getAge);
List<User> userList = userMapper.selectList(wrapper);
```
2. QueryWrapper
QueryWrapper是传统的查询构造器,可以用于创建各种查询条件,支持链式操作,但是使用时需要手写字符串拼接,相对不太方便。QueryWrapper的应用场景如下:
(1)根据某个字段查询数据,如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三");
List<User> userList = userMapper.selectList(wrapper);
```
(2)根据多个字段查询数据,如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三").eq("age", 18);
List<User> userList = userMapper.selectList(wrapper);
```
(3)根据条件进行分组、排序等操作,如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("age", "sex").groupBy("age").orderByDesc("age");
List<User> userList = userMapper.selectList(wrapper);
```