SpringBoot Mybatis 数据库流式读取优化。

本文探讨了在面临大量数据处理时,如何利用Mybatis进行流式读取以优化性能。通过对比传统全量读取导致的内存溢出问题,展示了采用Mybatis的ResultHandler回调机制实现数据库游标窗口访问,从而实现大数据量场景下的内存友好处理,保证系统稳定运行。
摘要由CSDN通过智能技术生成

     众所周知的,Mybatis作为一个优秀的ORM框架极大方便了我们对数据库CUID的操作,但是Mybatis对底层JDBC的封装同时也给我们底层调优带来了一些问题,例如前段时间,存在一个这样的业务场景,如果要从数据库当中读取 1000W 条数据来进行处理。也许我们都会考虑采用select limit之类的语句来分批处理,这不乏为一个较好的解决方案。但是我们更期望对读取的数据逐行处理(即流式处理)。这个时候JDBC可能采用返回游标的方式就可以完成。Oracle和MySQL在服务器端已经帮我们完成游标偏移,这样也使得客户端可以用较少内存来处理数据库返回的数据。废话不多说了,接下来我展示两个例子。

   (1)数据库中存了100W个账号,我们需要读取出来并处理,采用Mybatis全量读出并处理方案。代码如下:

//DAO层
public interface DataMapper {
	//void getHSUser();
	List<HsUser> getAllUsers();
}

映射XML文件

<mapper namespace="ems.rm.datasourceservice1.DataMapper" >	
	<resultMap id="HSUserAccountMap" type="ems.rm.datasourceservice1.HsUser">
		 <id  column="FUND_ACCOUNT" property="userAccount" jdbcType="VARCHAR"/>
	</resultMap>


	<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值