问题描述
在往数据库插入数据之前做了数据去重操作
List<String> adIdList = ttService.selectData(id);
if (CollectionUtils.isNotEmpty(adIdList)) {
Set<String> adIdSet = new HashSet<>(adIdList);
list.removeIf(item -> adIdSet.contains(item.getAdId()));
}
发现重复的数据无法remove,发现sql出现了问题
<select id="selectData" resultMap="BaseAd">
select ad_id
from plan
where plan_id = #{planId,jdbcType=VARCHAR}
</select>
List<String> selectDate(String planId);
这里我用的是List接收的,返回类型是resultMap,实际返回的数据不是一个String字符串,而是一个对象,所以adIdSet.contains(item.getAdId()) 总是返回false
解决
将resultMap换成resultType=“string”,成功解决