应用场景说明
MyBatis JDBC三种读取方式:
1.一次全部(默认):一次获取全部。
2.流式:多次获取,一次一行。
3.游标:多次获取,一次多行。
在开发中我们经常需要会遇到统计数据,如果数据量过大,采用默认的读取方式(一次性获取全
部)会导致内存飙升,甚至是内存溢出。而导出数据又需要查询大量的数据,因此采用流式查询就
比较合适了。
// 流式查询 一条条查询
//收集数据用的list
List<Map<String, Object>> list = new LinkedList<>();
this.getBaseMapper().selectImpalaBySql(sql, resultContext -> {
// 取流式查询对象
Map<String, Object> resultData = resultContext.getResultObject();
list.add(resultData);
if (batchSize.compareTo(list.size()) <= 0) {
//批量处理逻辑
}
});
void selectImpalaBySql(@Param("sqlScript") String sqlScript, ResultHandler<Map<String, Object>> handler);
<select id="selectImpalaBySql" resultSetType="FORWARD_ONLY" resultType="java.util.Map">
select <![CDATA[ ${sqlScript} ]]>
</select>