如何在MyBatis foreach中迭代HashMap?
我正在尝试生成一个sql,如下所示。
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in ( ('kp','kar'),('srt','sach'));
我的输入参数类型是HashMap。现在如何从映射器xml文件生成SQL。下面的代码引发异常,指出 map 已计算为 null。
<select id="selectCOLC" parameterType="java.util.HashMap" resultType="String">
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in
<foreach item="item" collection="#{map.keySet()}" open="((" separator="),(" close="))">
#{item},#{item.get(item)}
</foreach>
</select>
另一种方法是创建一个具有键值字段的类,创建一个对象列表,然后传递如下所示的 as。parameterType
list
<select id="selectCOLC" parameterType="list" resultType="String">
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in
<foreach item="item" collection="list" open="((" separator="),(" close="))">
#{item.getKey()},#{item.getVal()}
</foreach>
</select>
但是,有没有办法让我的映射器为第一种方法工作?除了将查询更改为联合