如何处理 ItemWriter 中的参数化 sql 查询?

How do I handle parameterized sql query in ItemWriter?

试图找出如何在 ItemWriter class 中使用参数化 sql 更新查询 class。

我看到错误:

Invalid parameter 1: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815

public class MyWriter implements ItemWriter<Assessment> {
    private NamedParameterJdbcTemplate namedJdbcTemplate;

    private static final String INSERT_QUERY = "UPDATE TABLE SET COLUMN = :var1, COLUMN2 = :var2 WHERE COLUMN = 'TEST'";


    public ExpireAssessmentWriter(DataSource dataSource) {
        this.namedJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
    }


    @Override
    public void write(List<? extends Assessment> list) throws Exception {
        for (Assessment assessment : list) {
           
                 Map<String, Object> paramMap = new HashMap<String, Object>();
                 paramMap.put("var1", assessment.getVar1());
                 paramMap.put("var2", assessment.getVar2());
                namedJdbcTemplate.update(INSERT_QUERY, paramMap);
                throw new IllegalStateException("Something went wrong!");
        }
    }
}

我正在创建一个自定义编写器以便写入三个不同的表,但使用 namedJdbcTemplate 时出现错误

我不明白你为什么要为此创建自定义编写器。 Spring批处理提供的JdbcBatchItemWriter已经支持命名参数。

您可以在 JdbcBatchItemWriterBuilderTests 中找到几个示例。