• 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语句中要使用这种方式。

    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
    C# 实现CRC16校验
    C#实现AES加密解密
    C# 简单的定时器使用
    使用密码远程QQ时窗口闪退
    C#桌面程序启动时传入参数
    解决Hangfire 导致服务器内存飙涨
    Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔
    web api 记录部署IIS获取服务器地址的类型
    学习asp.net Identity 心得体会(连接oracle)
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/13358165.html
Copyright © 2020-2023  润新知