Я написал запрос в myBatis, как показано ниже. Проблема в приведенном ниже запросе заключается в следующем. Значение col3 — это последнее значение, вставленное в карту, которое передается в запрос. Это не значение для соответствующего ключа.
<update id="upd10" parameterType="map">
UPDATE TABLE_NAME SET col1 = #{col1_value}, col3= {item.value} WHERE
col2 IN
<foreach item="item" index="index" collection="dateMap.entrySet()" open="(" separator="," close=")">
#{item.key}
</foreach>
</update>
Мой сценарий, как показано ниже,
Если значение col2 совпадает с item.key в хэш-карте, которую я передаю в запрос, я хочу установить значение col3 в item.value.
UPDATE ...SET... = (A or B or C, depending...) WHEN ... IN (1,2,3)
. Как вы ожидаете, что MyBatis узнает, КАКОЕ значение использовать? Тест на IN будет выполняться в базе данных, и это только говорит вам, что подходит одно из этих трех значений, но не какое. Итак, эта конструкция никогда не может работать, так как у вас есть два уровня: MyBatis должен решить, какое значение использовать, но не может, так как только база данных знает, какой ключ был найден. - person Florian Schaetz   schedule 04.03.2016