MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合
生活随笔
收集整理的這篇文章主要介紹了
MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
在mapper接口層方法參數有id的數組和姓名的模糊搜索和類型的三個參數。
現在需要將這三個參數傳遞在動態sql的xml中接受并進行判斷不為空。
然后查詢數據庫中記錄在第一個參數id數組中的并且姓名是模糊搜索的并且類型是直接相等于的。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
mapper層接口寫法:
public List<KqKqrysz> selectKqKqryszListBySx(@Param("array")Long[] bmids, String xm, int lx);xml寫法:
??? <select id="selectKqKqryszListBySx" resultMap="KqKqryszResult">SELECT j.id,j.xm,j.bm,k.tszt,z.zwgz,s.dict_label AS dklx,k.bcz,k.bc,k.zbbc,k.ddid,k.qysjdkfrom dp_jbxx j LEFT JOIN kq_kqrysz k on j.gh = k.ghLEFT JOIN dp_zcxx z ON j.gh = z.ghLEFT JOIN kq_dksz d ON j.gh = d.ghLEFT JOIN dp_grxx g ON j.gh = g.ghLEFT JOIN sys_dict_data s on d.dkzt = s.dict_valueANDs.dict_type="kq_kqgl_dksz_zt"<where><if test="array != null and array.length>0">and j.bmid in<foreach collection="array" item="item" open="(" separator="," close=")">${item}</foreach></if><if test="xm != null? and xm != ''">and j.xm like concat('%', #{xm}, '%')</if><if test="lx != null? and lx!= ''"> and g.ryfl = #{lx}</if></where></select>注意:
上面是一些相關的關聯查詢。
下面的
??????????? <if test="array != null and array.length>0">and j.bmid in<foreach collection="array" item="item" open="(" separator="," close=")">${item}</foreach></if>
就是實現查詢id在參數ids這個數組中的。
注意這里的array要與接口方法中@Param("array")一致。
然后這里傳遞的參數名字if test發判斷中直接使用對應接口方法中的參數名,不用使用#{xm}這種的方式,但是在里面的sql語句中要使用這種方式。
總結
以上是生活随笔為你收集整理的MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis中动态sql的模糊搜索、f
- 下一篇: SqlServer在安装时提示:需要Mi