MyBatis的动态SQL之set和foreach标签
一、set标签
1.1应用场景:
当存在多个if时,前一个if不满足条件那么SQL语句就会多出来一个逗号,此时加入set标签就会自动将多余的逗号删除掉。

1.2加入set标签后:
<update id="update2">
update emp
<set>
<if test="username != null">
username = #{username},
</if>
<if test="gender != null">
gender = #{gender},
</if>
<if test="name != null">
name = #{name},
</if>
<if test="image != null">
image = #{image},
</if>
<if test="job != null">
job = #{job},
</if>
<if test="entrydate != null">
entrydate = #{entrydate},
</if>
<if test="deptId != null">
dept_id = #{deptId},
</if>
<if test="updateTime != null">
update_time = #{updateTime}
</if>
</set>
where id = 11
</update>
运行结果:

二、foreach标签
2.1应用场景:
适用于遍历集合的时候,在使用foreach标签的时候可以传入collectio(集合名称)、item(单个个体的名称)、separator(分隔符,比如逗号等)、 open(起始符号)、 close(结束符号),插入这些是为了保证SQL语句的正常运行。
以下是遍历且删除ids集合对应信息的情形:
<delete id="deleteByID">
delete from emp where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
运行结果:
