MyBatis中動態sql的模糊搜索、foreach實現In集合的用法


場景

在使用MyBatis的動態sql時,常見的是傳遞一個ID的數組,查詢記錄的

ID在這個數組中的記錄和模糊搜索這兩種場景。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

模糊搜索的實現

mapper接口寫法:

public List<KqDksz> selectKqDkszListBySx(String xm);

xml寫法:

    <select id="selectKqDkszListBySx"  resultMap="KqDkszResult">
        <include refid="selectKqDkszVoJoinJibenXinXi"/>
        <where>
            <if test="xm != null  and xm != ''"> and j.xm like concat('%', #{xm}, '%')</if>
        </where>
    </select>

foreach實現in集合

mapper層接口寫法:

public int deleteKqBcglXiangxiByIds(Long[] ids);

xml寫法:

    <delete id="deleteKqBcglXiangxiByIds" parameterType="String">
        delete from kq_bcgl_xiangxi where ID in 
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

注意:

這里的參數為數組參數,就需要把collection屬性設置為array

但是這是數組默認的名字,推薦使用@Param來指定參數的名字,這時collection就設置為通過@Param注解指定的名字。

比如:

 public List<KqKqrysz> selectKqKqryszListBySx(@Param("badao")Long[] bmids);

對應的是

             <foreach collection="badao" item="item" open="(" separator="," close=")">
               ${item}
             </foreach>

 

如果這里不是數組而是list的話,那么其collection默認的就是list而不是array了。


免責聲明!

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



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