gpt4 book ai didi

java - MyBatis中foreach如何遍历HashMap?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:11 25 4
gpt4 key购买 nike

我正在尝试在 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 作为 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>

但是对于第一种方法,我的映射器有什么方法可以工作吗?除了将查询更改为 union

最佳答案

这是我项目中的一个例子,它运行良好

<select id="getObject" parameterType="Map" resultType="hashmap">    
select * from TABL where
<foreach collection="dataMap" index="key" item="value" open="" separator=" and " close="">
#{key}=#{value}
</foreach>
</select>

关于java - MyBatis中foreach如何遍历HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com