beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSch_springbatch 如何实现数据缓冲 如果读的数据量太大">
赞
踩
1. data-source-context.xml
2. quartz-context.xml commit-interval="10000"每次批量数据的条数,数值越大效率越高,可在此处添加事物处理,
每次回滚数就是commit-interval数
3.定时调度job类 QuartzLedgerJob.java
package net.etongbao.vasp.ac.quartz;
4.程序启动类 StartQuartz.java
package net.etongbao.vasp.ac.quartz;
5.pojo类 Ledger.java
6. LedgerDaoImpl.java
package net.etongbao.vasp.ac.dao.impl;
7.接口 LedgerDao .java
8. JdbcTemplete 需要的LedgerRowMapper.java
package net.etongbao.vasp.ac.batch.writer;
9.关键类LedgerWriter.java ,写入数据,负责数据的添加
classPath:
<?xml version="1.0" encoding="UTF-8"?>
总结: 测试数据8万多条,响应时间3分多钟。
关键在于quartz-context.xml 中<bean id="ledgerReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select * from ledger" />
<property name="rowMapper" ref="ledgerRowMapper" />
</bean> 负责读取数据 ,在程序执行时一次性抓取全部数据后在批量的交给LedgerWriter进行写操作。当然也可以使用分页读取JdbcPagingItemReader,但要分页数量与写入数量要大写相同,还可以对分页出来的数据进行添加悲观锁
LedgerWriter.java 负责写入数据,每次写入1000条。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。