Spring Batch之读数据库—JdbcPagingItemReader(四十一)

一、JdbcPagingItemReader

        Spring Batch框架提供了对JDBC分页读取支持的组件JdbcPagingItemReader。JdbcPaginItemReader实现ItemReader接口,核心作用是将数据库中记录通过分页的方式转换为Java对象。在JdbcPagingItemReader将数据库记录转换为Java对象是主要有两步工作:首先根据SimpleJdbcTemplate与PagingQueryProvider从数据库中根据分页的大小获取结果集ResultSet;其次使用RowMapper将结果集ResultSet转换为Java对象,具体步骤见下:

JdbcPagingItemReader关键接口、类说明:

关键类说明
DataSource提供读取数据库的数据源信息
SimpleJdbcTemplate提供标准的Spring的jdbc模板,根据分页信息查询数据库,返回排序后的结果集ResultSet
PagingQueryProvider根据分页信息生成每次需要查询的SQL语句
RowMapper负责将结果集ResultSet转换为Java对象

JdbcPagingItemReader关键属性:

属性类型说明
dataSourceDataSource数据源,通过该属性指定使用的数据库信息
fetchSizeint

设置ResultSet每次向数据库取的行数;setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取多少行数据回来,这样在下次rs.next时,可以直接从内存中取出数据而不需要网络交互,提高了效率。

默认值:-1

queryProviderPagingQueryProvider分页查询SQL语句生成器,负责根据分页信息生成每次需要执行的SQL语句
parameterValuesMap<String,Object>设置定义的SQL语句中的参数
rowMapperRowMapper将结果集ResultSet转换为指定的Pojo对象类;需要实现RowMapper接口,默认可以使用BeanPropertyRowMapper;
pageSizeint

分页大小

默认值:10

        Spring Batch框架为了支持PagingQueryProvider,根据不同的数据库类型提供多种实现,为了便于开发者屏蔽不同的数据库类型,Spring Batch框架提供了友好的工厂类SqlPagingQueryProviderFactoryBean为不同的数据库类提供PagingQueryProvider的实现类。

SqlPagingQueryProviderFactoryBean关键属性:

属性类型说明
dataSourceDataSource数据源,通过该属性指定使用的数据库信息
databaseTypeString指定数据库的类型,如果不显示指定该类型,则自动通过dataSource属性获取数据库的信息
ascendingBoolean

查询语句是否是升序。

默认值:true

fromClauseString定义查询语句的from部分
selectClauseString定义查询语句的select部分
sortKeyString定义查询语句排序的关键字段
whereClauseString定义查询语句的where字段

         使用JdbcPagingItemReader至少需要配置dataSource、queryProvider、rowMapper三个属性。

二、项目举例

1.项目框架

2.代码实现

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\BatchMain.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBill.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBillProcessor.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBillRowMapper.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\DummyCreditItemWriter.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\job\demo32-job.xml:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\job\demo32-jobContext.xml:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\db\create-tables-mysql.sql:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\properties\batch-mysql.properties:

3.运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值