mybatisplus去重
时间: 2023-06-23 10:45:26 浏览: 207
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 提供了 `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提供了多种方法进行去重查询。其中一种方法是使用queryWrapper的distinct方法。你可以通过在queryWrapper上调用select方法,指定要查询的字段,然后使用distinct方法去除重复的结果。另一种方法是直接在SQL语句中使用distinct关键字来进行去重查询。
例如,在使用queryWrapper进行去重查询时,你可以使用以下代码:
```java
queryWrapper.select("distinct 字段名");
```
而在SQL语句中使用distinct关键字进行去重查询时,你可以使用以下代码:
```xml
<select id="getReceiveBatchList" parameterType="map" resultType="string">
select distinct receive_batch from stereo_receive_package where receive_batch like #{month} and is_submit = '1' order by receive_batch desc
</select>
```
注意,这里的"字段名"需要替换为你要进行去重查询的字段名。
阅读全文