1.情景展示
oracle数据库中,需要根据指定字段内容调用加密程序后,根据主键id进行更新其对应的字段mindex_id的值;
加密通过Java实现,然后通过Java对其进行更新;
Java使用的sqlMap框架是ibatis,ibatis结合oracle如何实现批量更新?
2.解决方案
sqlMap如何写?
<!-- 批量更新 -->
<update id="updatePRIMARY_INDEX2" parameterClass="java.util.ArrayList">
UPDATE PRIMARY_INDEX2 SET MINDEX_ID =
<iterate conjunction="" open="CASE ID" close="END">
<![CDATA[
WHEN #list[].ID# THEN #list[].MINDEX_ID#
]]>
</iterate>
WHERE ID IN
<!-- in()不能超过1000 -->
<iterate conjunction="," open="(" close=")">
#list[].ID#
</iterate>
</update>
相当于oracle中的
UPDATE PRIMARY_INDEX2
SET MINDEX_ID = CASE ID
WHEN '' THEN
''
WHEN '' THEN
''
WHEN '' THEN
''
WHEN '' THEN
''
WHEN '' THEN
''
WHEN '' THEN
''
END
WHERE ID IN ('', '', '', '', '', '');
说明:oracle的in()函数有限制,里面的个数不能超过1000个。