2016-11-21 13 views
0

parameterTypeがjava.util.Setまたはその実装の場合、このパラメータでforeachを実行するとjava.lang.UnsupportedOperationExceptionがスローされます。mybatis3がサポートされないのはなぜですか?foreachを設定しますか?

<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内部の原因はCollectionWrappergetメソッドを実装し、単に例外をスローしませんです。
私はそれが意図されたデザインか理由を知りたいです。

+0

:単一パラメータの名前を期待

コレクションのですか? – Blank

+0

@Forward Allは 'UnsupportedOperationException'です。あなたが望むならmybatisのCollectionWrapperを見てください。 – NaHeon

答えて

1

documentationは、設定を使用することが可能であると述べている:

任意の地図やArrayオブジェクトだけでなく はとしてforeachのためにとあなたは、に任意の反復処理可能なオブジェクト(例えば、リストのため、設定、など)を渡すことができますコレクションパラメータ。

Mybatis 3.2.7で例外を再現できます。

しかし、Mybatis 3.3.0では正常に動作しています。あなたが詳細に例外を投稿してくださいだろう

<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> 
+0

私はmybatis 3.4.0を試してみました。 CollectionWrapperの空の実装は問題ではありません。 :) – NaHeon

関連する問題