mybatis-plus queryWrapper.select("distinct id"),只查询一个字段去重有效果,查询多个字段,对id进行去重就没效果,怎么处理?
时间: 2024-03-29 11:40:10 浏览: 318
如果你想查询多个字段并对其中的一个字段进行去重,可以使用 groupBy 方法,示例代码如下:
```
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.select("col1", "col2", "distinct id").groupBy("id");
List<Entity> entityList = entityMapper.selectList(queryWrapper);
```
其中,groupBy("id") 表示按照 id 字段进行分组,这样就能对 id 字段进行去重。同时,select 中也可以查询多个字段,比如 "col1", "col2" 等。
相关问题
mybatis-plus查询多个字段,对某个字段去重查找,select字段不用字符串,用User::getName
如果您想使用MyBatis-Plus查询多个字段,对某个字段去重查找,并且使用`User::getName`作为查询字段,可以使用以下代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select(User.class, User::getName).distinct(true);
List<User> userList = userMapper.selectList(queryWrapper);
```
在上面的代码中,我们创建了一个`QueryWrapper`对象,并指定了查询实体类为`User`。然后,我们使用`select`方法指定查询的字段,并使用`User::getName`作为查询字段。最后,我们使用`distinct`方法对`User::getName`去重,并调用`selectList`方法执行查询。
需要注意的是,`select`方法的第一个参数是查询实体类,第二个参数是查询字段。如果您想查询多个字段,可以在第二个参数中传入多个查询字段,例如:`User::getId, User::getName`。
mybatis-plus对某个字段去重查找
你可以使用Mybatis-Plus提供的Wrapper类的distinct方法进行某个字段的去重查询。例如,假设你想要对一个user表中的name字段进行去重查询,你可以按照以下步骤操作:
1. 导入Mybatis-Plus的Wrapper类
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
```
2. 创建一个QueryWrapper对象,并调用distinct方法
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("distinct name");
```
3. 使用Mybatis-Plus提供的BaseMapper接口的selectList方法进行查询
```java
List<User> userList = userMapper.selectList(wrapper);
```
这样就可以对name字段进行去重查询了。
阅读全文