如何使用 ibatis 有条件地更新 table?
How to update table conditionally using ibatis?
我想使用 ibatis dbmapper.xml 在 Postgres 中更新 table。
条件是它应该只更新地图包含值的那些列。对于其他列,不应修改该值。
假设我有一家公司 Table 包含以下列 {company_id, name, headQrtr, ceo}
如果我想使用 company_id 更新公司 table 中的任何特定行,我将使用以下代码片段 (dbmapper.xml)
<update id="update_company_details" parameterType="map">
update Company set (name,headQrtr,ceo) values(${name_value},${headQrtr_value},${ceo_value}) where company_id=${company_id_value}
</update>
如果我更新所有三列,这会很好用。
但在某些情况下,我只想更新 ceo 列,在这种情况下,我的输入映射将只有一个键(即 ceo_value),其余键不可用。
在这种情况下,其他列将更新为空值。那么我该如何限制呢?
我正在考虑使用 'if' 标签,但不确定如何使用它来设置不同列的值?
这对我有用...
<update id="update_company_details" parameterType="map">
UPDATE Company
<set>
<if test="name_value!= null">
name = #{name_value},
</if>
<if test="headQrtr_value!= null">
headQrtr= #{headQrtr_value},
</if>
<if test="ceo_value!= null">
ceo= #{ceo_value},
</if>
</set>
WHERE company_id= #{company_id_value}
</update>
我想使用 ibatis dbmapper.xml 在 Postgres 中更新 table。
条件是它应该只更新地图包含值的那些列。对于其他列,不应修改该值。
假设我有一家公司 Table 包含以下列 {company_id, name, headQrtr, ceo}
如果我想使用 company_id 更新公司 table 中的任何特定行,我将使用以下代码片段 (dbmapper.xml)
<update id="update_company_details" parameterType="map">
update Company set (name,headQrtr,ceo) values(${name_value},${headQrtr_value},${ceo_value}) where company_id=${company_id_value}
</update>
如果我更新所有三列,这会很好用。
但在某些情况下,我只想更新 ceo 列,在这种情况下,我的输入映射将只有一个键(即 ceo_value),其余键不可用。 在这种情况下,其他列将更新为空值。那么我该如何限制呢?
我正在考虑使用 'if' 标签,但不确定如何使用它来设置不同列的值?
这对我有用...
<update id="update_company_details" parameterType="map">
UPDATE Company
<set>
<if test="name_value!= null">
name = #{name_value},
</if>
<if test="headQrtr_value!= null">
headQrtr= #{headQrtr_value},
</if>
<if test="ceo_value!= null">
ceo= #{ceo_value},
</if>
</set>
WHERE company_id= #{company_id_value}
</update>