mybatisplus 去重
时间: 2023-09-02 16:15:50 浏览: 198
MyBatis-Plus 提供了 `Distinct` 方法来去重查询结果。你可以使用 `QueryWrapper` 或 `LambdaQueryWrapper` 类来构造查询条件,然后调用 `distinct` 方法进行去重查询。
示例代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("distinct age").eq("gender", "male");
List<User> userList = userMapper.selectList(queryWrapper);
```
上面的代码会查询出所有 `gender` 为 `male` 的用户的年龄,并且去重。
另外,如果你要查询多个字段并且需要去重,可以将多个字段名用逗号分隔,例如:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("distinct age, gender").eq("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
```
上面的代码会查询出所有年龄为 18 岁的用户的性别,并且去重。
相关问题
mybatisplus去重
Mybatis-plus 本身并不提供去重的方法,但是可以通过自定义 SQL 语句实现去重。
例如,假设我们有一个实体类 `User`,包含 `id` 和 `name` 两个字段,我们想要查询所有不重复的 `name`:
```java
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.select("DISTINCT name"));
```
上述代码中,我们使用 `QueryWrapper` 对象构建查询条件,并调用 `select` 方法指定查询的字段为 `DISTINCT name`,表示查询不重复的 `name`。
需要注意的是,这种方法只适用于查询单个字段不重复的情况。如果需要查询多个字段不重复,可以使用 GROUP BY 语句实现。例如,查询 `name` 和 `age` 不重复的记录:
```java
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.select("name, age")
.groupBy("name, age"));
```
上述代码中,我们使用 `groupBy` 方法指定按照 `name` 和 `age` 进行分组,并且查询的字段为 `name, age`。
mybatisplus去重查询
你可以使用 MyBatis-Plus 提供的 QueryWrapper 类来进行去重查询。以下是一个示例代码:
```java
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT column1, column2") // 列出需要去重的列
.eq("column3", value1) // 添加其他查询条件
.ne("column4", value2);
List<Entity> result = entityMapper.selectList(queryWrapper);
```
在上述代码中,你需要将 `Entity` 替换为你的实体类名,`entityMapper` 替换为你的 Mapper 接口实例。通过 `queryWrapper.select("DISTINCT column1, column2")` 指定需要去重的列,然后可以通过其他方法链式地添加其他查询条件。最后,通过 `entityMapper.selectList(queryWrapper)` 执行查询并获取结果。
希望这能帮到你!如有更多问题,请继续提问。
阅读全文
相关推荐














