数据库查询大量数据避免内存溢出的方法

原理就是分批查询。每次查询一定数量数据之后记录id,进行数据处理之后再继续查询继续处理,

allFrameObject = mapper.findAllFrameObjectByMaxId(minTime, beginRow, 1000);
while (CollectionUtils.isNotEmpty(allFrameObject)) {
      beginRow = allFrameObject.get(allFrameObject.size() - 1).getId() + 1;
      addTicketAndStateReport(allFrameObject, reports);
      allFrameObject = mapper.findAllFrameObjectByMaxId(minTime, beginRow, 1000);
  }
<select id="findAllFrameObjectByMaxId" resultMap="frameObjectData">
	select * FROM gsms_frame_object_data
	where id >= #{beginRow} <if test="beforeDay!=null">and CREATE_TIME > #{beforeDay} if>
	order by
	id
	limit #{batchSize}
select>

你可能感兴趣的:(数据库,java,开发语言)