Mybatisシリーズ:foreachラベル内にリストが空に転送されるソリューション
2538 ワード
1、リストにnullと空欄を判定して処理する
mybatisを使用してin()判定を行うときにパラメータがリストに入ってくる場合、リストに内容があるならまだしも、リストが空であればforeachだけでエラーが報告されるので、リストが空であるかどうかを判断するには当然javaコードで判断できるが、この方法を呼び出すたびに判断したくないので、mybatisのsqlプロファイルで判断したほうがいい.次のように構成されています.
2、listにnullと空を判定して処理する(推奨)
この方法では,入力されたcollection値が空の場合open内のsql文は生成されず,比較的簡潔である.
mybatisを使用してin()判定を行うときにパラメータがリストに入ってくる場合、リストに内容があるならまだしも、リストが空であればforeachだけでエラーが報告されるので、リストが空であるかどうかを判断するには当然javaコードで判断できるが、この方法を呼び出すたびに判断したくないので、mybatisのsqlプロファイルで判断したほうがいい.次のように構成されています.
<if test="list != null and list.size() > 0">
_claimreview.id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
2、listにnullと空を判定して処理する(推奨)
<foreach collection="list" index="index" item="item" open="AND _claimreview.id IN (" separator="," close=")">
#{item}
</foreach>
この方法では,入力されたcollection値が空の場合open内のsql文は生成されず,比較的簡潔である.