一、where标签案例

    List<FilterUsersListQueryResDTO> filterUsers(@Param("filterUsersQueryDTO") FilterUsersQueryReqDTO  filterUsersQueryDTO);

1、原始sql

简单的查询,弊端为参数必定为不为空

    <select id="filterUsers" resultMap="filterUsersResultMap">
        SELECT
        *
        FROM
        SYS_USER t1
        WHERE
        t1.LINKMAN = #{filterUsersQueryDTO.linkman} 
    </select>

2、简单if标签判断是否为空

只使用if标签,弊端为当所有if标签内条件为空时报错

    <select id="filterUsers" resultMap="filterUsersResultMap">
        SELECT
        *
        FROM
        SYS_USER t1
        WHERE
        <if test="filterUsersQueryDTO.linkman != null and filterUsersQueryDTO.linkman != ''">
                t1.LINKMAN = #{filterUsersQueryDTO.linkman} 
        </if>
    </select>

3、使用where标签后逻辑代码

使用where标签后,好处当条件全为空时,sql语句不会加where查询条件

    <select id="filterUsers" resultMap="filterUsersResultMap">
        SELECT
        *
        FROM
        SYS_USER t1
        <where>
            <if test="filterUsersQueryDTO.linkman != null and filterUsersQueryDTO.linkman != ''">
                t1.LINKMAN = #{filterUsersQueryDTO.linkman}
            </if>
        </where>
    </select>

二、@Select注解中当参数为空则不添加该参数的判断

    @Select("<script>" +
            "select * from school_student " +
            "where 1=1" +
            "<when test='id !=null'> and id = #{id}" +
            "</when>" +
            "</script>")
    List<SchoolStudent> querySchoolStudent4(@Param("id") Integer id);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐