mybatis 一次从数据库查询太多数据,导致数据库挂了,这里使用流式查询,每次查询500条数据,对所有数据进行遍历:
这里写在Mapper.java(如下 JOB_GZS 是数据库表,JobGzs 是实体类)
@Select("select * from ${schema}.JOB_GZS")
@Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = 500)
@ResultType(JobGzs.class)
void dynamicSelectLargeData(ResultHandler<JobGzs> handler);
这里是对这个流式方法的使用:
@PostMapping("/test")
@ApiOperation(value = "测试流式查询")
public Object test(){
List<JobGzs> list = new LinkedList<>();
jobGzsMapper.dynamicSelectLargeData(new ResultHandler<JobGzs>() {
@Override
public void handleResult(ResultContext<? extends JobGzs> resultContext) {
JobGzs jobGzs = resultContext.getResultObject();
list.add(jobGzs);
System.out.println(list.size());
}
});
return null;
}