include :进口,引进xx refid:参考id,涉及到的id
<update id="setUpdate">
update blog
/*set的if标签必须记得加,逗号 否则会报错,因为可能会满足多个条件*/
<set>
<include refid="if-update"/>
</set>
where author=#{author}
</update>
<sql id="if-update">
<if test="title !=null">
title=#{title},
</if>
<if test="id != null">
id =#{id},
</if>
</sql>
官方的解释:
sql
这个元素可以用来定义可重用的 SQL 代码片段,以便在其它语句中使用。 参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值。比如:
<sql id="userColumns">
${alias}.id,${alias}.username,${alias}.password
</sql>
这个 SQL 片段可以在其它语句中使用,例如:
<select id="selectUsers" resultType="map">
select
<include refid="userColumns"><property name="alias" value="t1"/></include>,
<include refid="userColumns"><property name="alias" value="t2"/></include>
from some_table t1
cross join some_table t2
</select>
也可以在 include 元素的 refid 属性或内部语句中使用属性值,例如:
<sql id="sometable">
${prefix}Table
</sql>
<sql id="someinclude">
from
<include refid="${include_target}"/>
</sql>
<select id="select" resultType="map">
select
field1, field2, field3
<include refid="someinclude">
<property name="prefix" value="Some"/>
<property name="include_target" value="sometable"/>
</include>
</select>