覆盤一下填過的坑:
mybatis中,如果不對list就行判空處理,就會出現當list為空或者list.size=0時拋異常,錯誤範例如下:
SELECT * FROM table_xxx (NOLOCK)
WHERE id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
1、對list判null和判空來處理
使用mybatis進行in()判斷的時候傳入引數為List,需要判斷List是否為空了,當然可以在java程式碼中進行判斷,但是我不想每次呼叫該方法都要進行判斷,所有最好還是在mybatis的sql組態檔中判斷,設定如下:
SELECT * FROM table_xxx (NOLOCK) WHERE
<if test="list != null and list.size() > 0">
id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
2、對list判null和判空來處理(牆裂推薦)
SELECT * FROM table_xxx (NOLOCK)
WHERE isActive=1
<foreach collection="list" index="index" item="item" open="AND id IN (" separator="," close=")">
#{item}
</foreach>