我无法使用JdbcBatchItemWriter正确更新数据库表。下面是代码片段。在空表上插入正在获得正确的响应,但在输入表上没有发生更新。
<bean id="odbWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource"></property>
<property name="sql">
<value>
<![CDATA[
update employeethree set salary = :salary, designation = :designation, promotioneligibility = :promotionEligibility
]]>
</value>
</property>
<property name="itemSqlParameterSourceProvider">
<bean
class="batchjobreaddb.CustomBeanPropertyItemSqlParameterSourceProvider" />
</property>
如果我将CDATA内的查询更改为:
insert into employeetwo values(:empId, :empName, :dept , :salary, :designation, :experienceInMonths, :promotionEligibility)
然后它给了我想要的结果。 (EmployeeTwo具有相同的结构但是为空。)
请帮忙。谢谢:))
答案 0 :(得分:0)
您的UPDATE
查询没有WHERE
子句。您如何知道要更新的记录?
对于正确的更新行为,您必须指定一个WHERE
子句,该子句可以正确标识您希望通过UPDATE
查询进行修改的记录。
对于INSERT
查询,这显然不是必需的,因为您正在创建全新的记录,而不是修改现有记录。
假设您的示例INSERT
查询的雇员ID字段为empid
,请尝试修改您的JdbcBatchItemWriter
,将sql
的值设置为:
<property name="sql">
<value>
<![CDATA[
UPDATE employeethree
SET salary = :salary,
designation = :designation,
promotioneligibility = :promotionEligibility
WHERE empid = :empId
]]>
</value>
</property>