没有'?'占位符的 Spring 批处理查询会导致"使用带有'?'占位符的 SQL 语句需要 ItemPreparedStatementSetter



private String thisQuery = "SELECT count (*) FROM MYTABLE a WHERE a.TYPE_CD='THIS' AND a.CTGY_CD='2' WITH UR";

ItemWriter<ThisTable> ThisTableItemWriter(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<ThisTable>()
BeanPropertyItemSqlParameterSourceProvider<>())
.sql(thisQuery)
.assertUpdates(true)
.dataSource(dataSource)
.build();
}

我不知道为什么它问我一个perparedStatementSetter如果查询我传递没有占位符?(

我只是使用一个简单的选择查询来测试连接到DB

编写器不应该发出类型为SELECT的查询。根据这里的代码:https://github.com/spring-projects/spring-batch/blob/f15edd414ada2c30ca136c243dbe0bb2fee447f3/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcBatchItemWriter.java#L142-L156,您应该通过namedParameterJdbcTemplate或使用perparedStatementSetter。在这方面,错误的措辞可能不准确。如果您认为这可以改进,您可以用一个最小的完整示例打开一个问题。

最新更新