一、动态 SQL 简介
MyBatis 动态 SQL 允许根据条件动态拼接 SQL 语句,避免手动处理字符串拼接的复杂性和 SQL 注入风险。核心标签包括 <if>、<where>、<foreach> 等。以下通过示例详细讲解其用法。
二、<if>** 标签**
用途:根据条件动态插入 SQL 片段。
属性:
test:必填,条件表达式(基于 OGNL 语法)。
示例 1:根据 id 和 name 查询员工
<select id="findByIdAndName" resultType="cn.cjxy.domain.Emp">
SELECT * FROM EMP
<where>
<if test="id != null">
AND id = #{id} <!-- 当 id 不为空时拼接 -->
</if>
<if test="name != null">
AND name = #{name} <!-- 当 name 不为空时拼接 -->
</if>
</where>
</select>
注意:
<if>通常与<where>配合使用,避免单独处理WHERE和AND的冗余问题。- 如果所有条件均不满足,
<where>会忽略整个WHERE子句。
三、<where>** 标签**
用途:智能处理 WHERE 子句,自动删除多余的 AND 或 OR。
特性:
- 如果
<where>内无有效条件,不会生成WHERE关键字。 - 自动去除子句中开头的
AND或OR。
示例 2:多条件查询

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



