mybatis plush 查询项目 id 并去重

此篇博客介绍了如何使用Spring Boot的Mybatis Plus查询所有处于待处理状态(QUOTATION_STATUS=0)的报价,通过GROUP BY和DISTINCT操作获取每个项目的唯一标识列表,以实现去重功能。
摘要由CSDN通过智能技术生成
 var projectIds = offerService.listObjs(new QueryWrapper<TOffer>()
                    .eq(TOffer.QUOTATION_STATUS,0)
                    .groupBy(TOffer.PROJECT_ID)
                    .select("distinct " + TOffer.PROJECT_ID)
            );
//返回项目id列表,并且去重

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Mybatis中,可以使用 `<distinct>` 标签来实现对查询结果的去重。 例如,在Mybatis的映射文件中定义查询的SQL语句: ```xml <select id="findDistinctUsers" resultType="hashmap" > SELECT DISTINCT * FROM USERS </select> ``` 在java中调用这个查询: ```java List<Map<String, Object>> result = sqlSession.selectList("findDistinctUsers"); ``` 这样就能查询出不重复的用户数据了。 当然也可以在mapper中对指定的字段进行去重,例如: ```xml <select id="findDistinctUsername" resultType="hashmap" > SELECT DISTINCT username FROM USERS </select> ``` 在java中调用这个查询: ```java List<Map<String, Object>> result = sqlSession.selectList("findDistinctUsername"); ``` 这样就能查询出不重复的用户名。 不过注意,使用distinct标签会对性能有一定影响,因为在整个查询结果集中,会进行全部查询到内存中去重,这样会导致内存占用和性能问题。 ### 回答2: 在Java中使用Mybatis查询出来的数据进行去重,可以根据数据的某个属性值进行去重操作。以下是一种实现方法: 1. 将查询结果存储为一个List集合,假设为resultList。 2. 创建一个新的List集合,用于存储去重后的数据,假设为distinctList。 3. 遍历resultList集合,对于每个元素进行判断是否已经存在于distinctList集合中。 4. 如果该元素在distinctList中已存在,则跳过该元素,继续遍历下一个元素。 5. 如果该元素在distinctList中不存在,则将该元素添加到distinctList中。 6. 遍历结束后,distinctList中存储的就是去重后的数据。 示例代码如下: ```java List<Object> resultList = sqlSession.selectList("queryData"); // 使用Mybatis查询数据得到结果集 List<Object> distinctList = new ArrayList<>(); // 创建一个新的集合用于存储去重后的数据 for (Object obj : resultList) { if (!distinctList.contains(obj)) { // 判断该元素是否已经在distinctList中存在 distinctList.add(obj); // 如果不存在,则将该元素添加到distinctList中 } } ``` 通过以上方法,我们可以将查询出来的数据进行去重,并将去重后的结果存储在distinctList集合中。注意,这种方法是根据对象的equals方法进行去重判断的,所以需要保证查询结果对象正确重写了equals方法。 ### 回答3: 在Java中,可以使用HashSet来实现Mybatis查询出来的数据去重。HashSet是一种集合,它不允许出现重复的元素。 首先,获取查询出来的数据,可以通过使用Mybatis的Mapper接口来执行查询操作,将查询结果保存在一个List中。 接着,创建一个HashSet对象,用于存储去重后的数据。可以使用HashSet的构造函数来创建一个初始为空的HashSet。 然后,使用一个循环遍历查询得到的数据列表,在每次循环中,将数据添加到HashSet中。由于HashSet不允许重复的元素,如果数据已经存在于HashSet中,添加操作将会失败,这样就实现了去重的功能。 最后,将HashSet中的数据转换为列表形式,可以使用HashSet的toArray方法或者将HashSet直接作为参数传递给ArrayList的构造函数,得到去重后的数据列表。 示例代码如下所示: ```java List<Data> dataList = mapper.queryData(); // 执行查询操作,获取数据列表 HashSet<Data> dataHashSet = new HashSet<>(dataList.size()); // 创建一个初始为空的HashSet for (Data data : dataList) { // 遍历数据列表 dataHashSet.add(data); // 将数据添加到HashSet中,实现去重操作 } List<Data> uniqueDataList = new ArrayList<>(dataHashSet); // 将HashSet中的数据转换为列表形式 ``` 以上代码中的Data是查询出的数据类型,根据实际情况进行修改。 通过以上步骤,就可以使用HashSet实现Mybatis查询出来的数据去重的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值