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.qysjdk
        from dp_jbxx j LEFT JOIN kq_kqrysz k on j.gh = k.gh
        LEFT JOIN dp_zcxx z ON j.gh = z.gh
        LEFT JOIN kq_dksz d ON j.gh = d.gh
        LEFT JOIN dp_grxx g ON j.gh = g.gh
        LEFT JOIN sys_dict_data s on d.dkzt = s.dict_value
        AND
        s.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語句中要使用這種方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM