不嚴謹的寫法,可能會報錯:in (),這種狀況不符合mysql的語法。mysql
select from loanwhere LOAN_ID in sql
<foreach item="item" index="id" collection="list" open="(" separator="," close=")"> app
#{item} spa
要麼在Mybatis的sql文件中,要麼在Java程序中。it
sql中的寫法:io
<select id="findByLoanIds" parameterType="List">test
select *foreach
from p2p_loan_variation where 1= 1List
<if test="list != null and list.size>0">select
and LOAN_ID in
<foreach item="item" index="id" collection="list" open="("
separator="," close=")">
#{item}
</foreach>
</if>
<if test="list==null or list.size==0">and 1=0</if>
</select>
Java中的寫法:
List<LoanVariation> list = null;
if(ListUtils.isNotEmpty(loadIds){
list =loanVariationDao.findByLoanIds(loanIds);
}
return list;
若是有多個Java方法調用dao mapper,在sql中寫比較省事,畢竟只須要一次「參數檢查」。
上面的寫法是針對一個查詢條件的,若是有多個查詢條件,記得處理條件之間的關係,
好比 a=1 and b =2 or c=3.
若是有in條件,最好加上括號,(a=1) and (b =2 ) or ( c in ...)