栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis多条件In批量查询方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis多条件In批量查询方法

需要注意的问题
  1. 在Oracle中in条件不能超过1000个 所以大批量数据需要分批查询
    Repository中做分批处理
1.xml文件

        select t.a, t.b, t.c ,t.d 
        from tableName t
        WHERe 
        (t.a,t.b) in
        
            (#{item.attribute1},#{item.attribute2})
        
    
2.mapper文件
List selectByattribute1Andattribute2(                                           @Param("list") List list);
3.VO文件
public class HpsMtMoAssActualQueryVo implements Serializable {

	private static final long serialVersionUID = -3577726134433110319L;
	private Long attribute1;
	private Long attribute2;

	public Long getAttribute1() {
		return attribute1;
	}

	public void setAttribute1(Long attribute1) {
		this.attribute1 = attribute1;
	}

	public Long getAttribute2() {
		return attribute2;
	}

	public void setAttribute2(Long attribute2) {
		this.attribute2= attribute2;
	}
}
4.Repository层
@Component
public class MoAssActualRepositoryImpl extends BaseRepositoryImpl implements MoAssActualRepository {
	private static final int MaxInSize = 1000;

	private final MoAssActualMapper moAssActualMapper;

	@Autowired
	public MoAssActualRepositoryImpl(MoAssActualMapper moAssActualMapper) {
		this.moAssActualMapper = moAssActualMapper;
	}

	@Override
	public List selectByMoIdAndMaterialId(Long tenantId, List list){
		if(CollectionUtils.isEmpty(list)){
			return null;
		}
		List moAssActuals = new ArrayList<>(list.size());
		int valueSize = list.size();
		if (valueSize==1){
			moAssActuals = moAssActualMapper.selectByMoIdAndMaterialId(tenantId, list);
		}else {
			int batchSize = valueSize/MaxInSize+(valueSize % MaxInSize == 0 ? 0 : 1);
			for (int i = 0; i < batchSize; i++) {
				// 获取list中 最多1000条数据
				List queryVoList = list.stream()
						.skip(i*MaxInSize).limit(MaxInSize).collect(Collectors.toList());
				List resultList = moAssActualMapper.selectByMoIdAndMaterialId(tenantId, queryVoList);
				moAssActuals.addAll(resultList);
			}
		}
		return moAssActuals;
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号