9.4 深入Mapper XML映射文件 9.4.3 sql标签

9.4.3 sql标签

sql元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。它可以被静态地(在加载参数时)参数化。不同的属性值通过包含的实例发生变化。例如

1
<sql id="userColumns">${alias}.id,${alias}.username,${alias}.password</sql>

这个SQL片段可以被包含在其他语句中,例如:

1
2
3
4
5
6
7
<select id="selectUser" resultTyep="map">
select
<include refid="userColumns">
<property name="alias" value="t1"/>
</include>
from some_table t1
</select>

属性值可以用于包含的refid属性或者包含的字句里面的属性,例如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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>