现在我有这个:
<bean id="hardcodedQuery"
class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource" />
<property name="sql">
<value>
<![CDATA[
DELETE from GENERIC_TABLE
WHERE id = 999
]]>
</value>
</property>
<property name="itemSqlParameterSourceProvider">
<bean
class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
</bean>
但是我一直得到java.lang.IllegalArgumentException,说我的SQL查询是参数化的。我知道他们希望我给读者一些参考,并且在命令中有:randomVariable,但我坚决反对这个明显的要求。我错了,是否有解决方法?或者我必须为我的bean使用完全不同的类吗?
这是错误消息:
Caused by: java.lang.IllegalArgumentException: Using SQL statement with '?' placeholders requires an ItemPreparedStatementSetter
谢谢!
答案 0 :(得分:1)
简短的回答是,这门课程并不适合您尝试做的事情。 ItemWriter
合约假定基于项目的处理,这意味着您需要为每个项目参数化SQL。如果您只想运行删除语句,请使用使用Tasklet
的{{1}}实现。