![](/img/trans.png)
[英]How to use <foreach> statement in @SelectProvider class with MyBatis3
[英]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.