小编bid*_*jee的帖子

春季批处理:一步即可使用多个项目读取器

我是春季新手。我需要在春季批处理中完成的任务如下:

  1. 需要从数据库中读取一些元数据。
  2. 基于此元数据,我需要读取一些文件。
  3. 经过一些处理后,需要将这些值从文件写入数据库。

我的查询如下:

一种。对于第一个要求,我需要将整个结果集映射到一个对象,其中与Person相关的数据在一个表中,与Pets相关的数据在另一个表中,并通过person id联接。

public class PersonPetDetails {

    private String personName;
    private String personAddr;

    private int personAge;

    private List<Pet> pets;
Run Code Online (Sandbox Code Playgroud)

为此,我编写了一个自定义项目读取器,该读取器扩展了JdbcCursorItemReader。

public class CustomJDBCCusrorItemReader<T> extends JdbcCursorItemReader<T> {

    private ResultSetExtractor<T> resultSetExtractor;


    public void setResultSetExtractor(ResultSetExtractor<T> resultSetExtractor) {
        this.resultSetExtractor = resultSetExtractor;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        setVerifyCursorPosition(false);
        Assert.notNull(getDataSource(), "DataSource must be provided");
        Assert.notNull(getSql(), "The SQL query must be provided");
        Assert.notNull(resultSetExtractor, "ResultSetExtractor must be provided");
    }


    @Override
    protected T readCursor(ResultSet rs, int currentRow) throws SQLException {      
        return resultSetExtractor.extractData(rs); …
Run Code Online (Sandbox Code Playgroud)

java spring-batch

5
推荐指数
1
解决办法
6585
查看次数

标签 统计

java ×1

spring-batch ×1