自定义项目编写器使用包含hashmap

时间:2018-02-09 02:02:11

标签: spring-batch spring-jdbc

我是春季批处理的新手,我的要求是阅读动态excel表并插入数据库。我能够读取excel并将其传递给writer,但只有excel表中的最后一条记录被插入到数据库中。这是我的项目编写者代码

@Bean
public ItemWriter<List<LinkedHashMap<String, String>>> tempwrite() {

 JdbcBatchItemWriter<List<LinkedHashMap<String, String>>> databaseItemWriter = new JdbcBatchItemWriter<>();
    databaseItemWriter.setDataSource(dataSource);

    databaseItemWriter.setSql("insert into table values(next value for seq_table,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

    ItemPreparedStatementSetter<List<LinkedHashMap<String, String>>> valueSetter = 
            new databasePsSetter();



    databaseItemWriter.setItemPreparedStatementSetter(valueSetter);

    return databaseItemWriter;
}

以下是我准备好的语句setter类

public class databasePsSetter implements ItemPreparedStatementSetter<List<LinkedHashMap<String, String>>> {

    @Override
    public void setValues(List<LinkedHashMap<String, String>> item, PreparedStatement ps) throws SQLException {


        int columnNumber=1;

        for(LinkedHashMap<String, String> row:item){
            columnNumber=1;
            for (Map.Entry<String, String> entry : row.entrySet()) {

                ps.setString(columnNumber, entry.getValue());
                columnNumber++;

            }

        }


    }

}

我见过很多例子,但是他们都使用了dto类,但我不确定这是否是包含hashmap的列表列表的正确实现方式

0 个答案:

没有答案