动态 SQL 是 MyBatis 的强大特性之一,能够完成不同条件下不同的 sql 拼接。也就是说执行的 SQL 语句并不是固定的,而是不同人的不同操作执行的语句会有所差异。MyBatis 通过使用 标签 的方式来实现这种灵活性的。
<if>标签
例如在有一些网站进行注册的时候,会要求必须输入邮箱、密码,而那些年龄性别什么的则并不是必填项。这种场景下往数据库插入就可以使用 <if> 标签来实现。
UserMapper:
int addUser2(UserEntity user);
UserMapper.xml:
<insert id="addUser2">
insert into userinfo(username,
<if test="photo != null">
photo,
</if>
password) values (#{username},
<if test="photo != null">
#{photo},
</if>
#{password})
</insert>
单元测试 验证:
添加 photo:
不添加 photo: