復盤一下填過的坑:
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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/85815.html
標籤:其他
下一篇:一個設想
