Spring Batch Writer对象数组插入

时间:2018-02-09 01:18:41

标签: java spring spring-batch

@Bean
public JdbcBatchItemWriter<MyObject[]> jdbcBatchItemWriter(){
    JdbcBatchItemWriter<MyObject[]> itemWriter = new 
    JdbcBatchItemWriter<MyObject[]>();
    itemWriter.setSql("INSERT INTO ITEM (ID, DESCRIPTION) VALUES 
    (?, ?)");
    itemWriter.setDataSource(dataSource);
    itemWriter.setItemSqlParameterSourceProvider(new 
    BeanPropertyItemSqlParameterSourceProvider<MyObject[]>());
    return itemWriter;
}

我有一个名为MyObject的对象数组,我想将其插入数据库。

MyObject的每个下标表示从数据库读取的行的列。

例如,对于此实例,MyObject [0]将为列ID,而MyObject[1]将为列DESCRIPTION

我希望能够传入数组对象的下标,以便在我的数据库中插入值。喜欢这个

itemWriter.setSql("INSERT INTO ITEM (ID, DESCRIPTION) VALUES (0, 1)");

我应该怎样解决这个问题?

1 个答案:

答案 0 :(得分:0)

查看这篇精彩文章https://www.petrikainulainen.net/programming/spring-framework/spring-batch-tutorial-writing-information-to-a-database-with-jdbc/

尝试使用命名参数。在填充参数的同时,给出如下值:

final class MyObjectPreparedStatementSetter implements ItemPreparedStatementSetter<MyObject> {

    @Override
    public void setValues(Myobject myObject, 
                          PreparedStatement preparedStatement) throws SQLException {
        preparedStatement.setString(1, myObject[0]);
        preparedStatement.setString(2, myObject[1]);
        preparedStatement.setString(3, myObject[2]);
    }
}