mysql大数据量查询mybatis流查询

550 阅读1分钟

基本概念

流式查询 指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。

如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。

流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:执行一个流式查询后,数据库访问框架就不负责关闭数据库连接了,需要应用在取完数据后自己关闭。

0.前提

注:迭代器使用需要保持sqlsession的链接才可以
在这里插入图片描述

1.SqlSessionFactory

在这里插入图片描述

2.利用事务的特性,程序执行完成才会关闭sqlsession

在这里插入图片描述

3.使用spring事务注解完成(慎用)

注:这种方式最简单,代码量也少逻辑也简单,但是因为spring注解事务特性只在外部调用时生效,本类调用还是不能正常使用迭代器
在这里插入图片描述

github地址

参考

小黄鸭编程社区https://mp.weixin.qq.com/s/4OnopF1uT7pz_5Y2MUPVtQ
blog.csdn.net/weixin_4266…
blog.csdn.net/jyxmust/art…