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

一、JdbcPagingItemReader

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

Spring Batch之读数据库—JdbcPagingItemReader(四十一)_第1张图片

JdbcPagingItemReader关键接口、类说明:

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

JdbcPagingItemReader关键属性:

属性 类型 说明
dataSource DataSource 数据源,通过该属性指定使用的数据库信息
fetchSize int

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

默认值:-1

queryProvider PagingQueryProvider 分页查询SQL语句生成器,负责根据分页信息生成每次需要执行的SQL语句
parameterValues Map 设置定义的SQL语句中的参数
rowMapper RowMapper 将结果集ResultSet转换为指定的Pojo对象类;需要实现RowMapper接口,默认可以使用BeanPropertyRowMapper;
pageSize int

分页大小

默认值:10

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

SqlPagingQueryProviderFactoryBean关键属性:

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

查询语句是否是升序。

默认值:true

fromClause String 定义查询语句的from部分
selectClause String 定义查询语句的select部分
sortKey String 定义查询语句排序的关键字段
whereClause String 定义查询语句的where字段

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

二、项目举例

1.项目框架

Spring Batch之读数据库—JdbcPagingItemReader(四十一)_第2张图片

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.运行结果

Spring Batch之读数据库—JdbcPagingItemReader(四十一)_第3张图片

 

你可能感兴趣的:(Spring,Batch,spring,batch)