SpringBoot集成Mybatis实现流式查询
一:关键service代码,由外部调用触发事务进行长链接执行
@Transactional
public void test() {
testMybiatisStreamQuery();
}
private void testMybiatisStreamQuery(){
long start = System.currentTimeMillis();
String sqlText = " SELECT ID FROM TEST ORDER BY ID DESC ";
Cursor<Map<String, String>> maps = testDao.getDatMap(sqlText);
int i = 1;
for (Map map : maps) {
log.info("ID:{}.", i, map.get("ID"));
i++;
}
long end = System.currentTimeMillis();
log.info("耗时:{}.", (end-start)/1000);
}
二:关键接口dao代码
Cursor<Map<String, String>> getDatMap(@Param("sqlText") String sqlText);
三:关键接口mapper代码
<select id="getDatMap" fetchSize="10000" resultSetType="FORWARD_ONLY" resultType="java.util.Map">
${sqlText}
</select>