簡體   English   中英

為什么mybatis3不支持Set foreach?

[英]Why doesn't mybatis3 support Set foreach?

如果parameterType是java.util.Set或其實現,則使用此參數進行foreach會拋出java.lang.UnsupportedOperationException

<select id="selectList" parameterType="java.util.HashSet" resultMap="someMap">
    SELECT key FROM tb_my_table
    WHERE value IN (
        <foreach collection="set" item="item" separator=",">
        #{item}
        </foreach>
    )
</select>

mybatis3內部的原因是CollectionWrapper不實現get方法,而只是引發異常。
我想知道它是否是預期的設計及其原因。

文檔指出可以使用Sets:

您可以將任何Iterable對象 (例如List,Set等)以及任何Map或Array對象傳遞給foreach作為集合參數。

我可以使用Mybatis 3.2.7重現異常。

但是在Mybatis 3.3.0上運行正常。

請注意,單個參數的期望名稱是collection

<select id="selectList" parameterType="java.util.HashSet" resultMap="someMap">
    SELECT key FROM tb_my_table
    WHERE value IN (
        <foreach collection="collection" item="item" separator=",">
        #{item}
        </foreach>
    )
</select>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM