分页读取数据:
if (isPushSup) {
Date date = new Date();
SimpleDateFormat dateStyle = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取执行次数
List<WebsiteProductQuotationCnHengRui> productInfo = hengRuiProductMapper.selectCountAll();//拿到所有变化数据数据(新增,修改,删除)
int size = productInfo.size();
//分页截取
int startNum = 0; //开始条数
int totalNum = 2000; //一次截取总条数
int cycleIndex = size / totalNum + (size % totalNum != 0 ? 1 : 0);//循环执行次数
for (int i = 0; i < cycleIndex; i++) {
//循环异常报错 继续执行
try {
if (i == 0) {
startNum = 0;
} else {
startNum = startNum + totalNum;
}
differentialDataProcessing(productInfo, startNum, totalNum);//分页读取
} catch (Exception ex) {
ex.printStackTrace();
}
}
hengRuiProductMapper.productPackPriceHengRuiDelete();//清空表
hengRuiProductMapper.productPackPriceHengRuiInsert();//备份现有记录
//添加产品变动记录基本表
hengRuiProductMapper.insertHengRuiUpdateStatusRecords(dateStyle.format(date), dateStyle.format(date), 1);
}
//分页后的数据
List<WebsiteProductQuotationCnHengRui> websiteProductQuotationCnHengRuis = hengRuiProductMapper.selectCountAllPage(startNum, totalNum);
XML:
<!--分页读取-->
<select id="selectCountAllPage" resultType="com.chem.www.domain.WebsiteProductQuotationCnHengRui">
select * from AAA where AAA.product_id IS NULL limit #{startNum}, #{totalNum}
</select>
分片切分集合:
//将集合转换为XML字符串 集合生成XMl 并调用方法进行 传送
//分割集合 500个一分割
List<List<ProductHengRuiInfo>> lists = splitList(allList, 50);
int size = lists.size();
for (int i = 0; i < size; i++) {
//获取分割后的第一层
List<ProductHengRuiInfo> item = lists.get(i);
String xmlString = createXmlStringList(item);//调用方法生成XML data
sendRollbackInfo(xmlString);
}
/**
* 分割集合
*/
private List<List<ProductHengRuiInfo>> splitList(List<ProductHengRuiInfo> list, int groupSize) {
return Lists.partition(list, groupSize); // 使用guava
}