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



所有评论(0)