gpt4 book ai didi

sql - JdbcBatchItemWriter 中的更新语句

转载 作者:行者123 更新时间:2023-12-03 19:48:16 25 4
gpt4 key购买 nike

我无法使用 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 具有相同的结构,但为空。)

请帮忙。谢谢 :)

最佳答案

您的 UPDATE 查询没有 WHERE 条款。你怎么知道要更新哪条记录?

要获得正确的更新行为,您必须指定 WHERE正确标识您希望使用 UPDATE 修改的记录的子句询问。

这对于 INSERT 显然不是必需的。查询,因为您正在创建一个全新的记录而不是修改现有的记录。

假设从您的示例 INSERT查询员工 ID 字段为 empid ,尝试修改您的 JdbcBatchItemWriter 设置 sql值(value):

<property name="sql">
<value>
<![CDATA[
UPDATE employeethree
SET salary = :salary,
designation = :designation,
promotioneligibility = :promotionEligibility
WHERE empid = :empId
]]>
</value>
</property>

关于sql - JdbcBatchItemWriter 中的更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com