这个元素可以被用来定义可重用的 SQL 代码段,这些 SQL 代码可以被包含在其他语句中。它可以(在加载的时候)被静态地设置参数。 在不同的包含语句中可以设置不同的值到参数占位符上。比如:
1 2 3 4 5 6 7 8 9
| <sql id="Example_Where_Clause"> where 1=1 <if test="userName != null" > AND user_name = #{userName,jdbcType=VARCHAR} </if> <if test="passWord != null" > AND pass_word = #{passWord,jdbcType=VARCHAR} </if> </sql>
|
1
| <sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>
|
这个 SQL 片段可以被包含在其他语句中,例如:
1 2 3 4 5 6 7
| <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 属性里或 include 元素的内部语句中,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <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>
|