我正在尝试在 mybatis 中生成如下所示的 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>
另一种方法是创建一个具有键值字段的类,创建一个对象列表,然后传递如下所示的parameterType
as 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>
但是,对于第一种方法,我的映射器工作有什么办法吗?除了将查询更改为联合