# MyBatis-常用代码

# include 标签

定义 SQL 片段:

<!-- 定义公共字段 -->
<sql id="Base_Column_List">
    id, name, email, create_time
</sql>

<!-- 定义带条件的片段 -->
<sql id="Where_Clause">
    <where>
        status = 1
        <if test="name != null">
            AND name LIKE #{name}
        </if>
    </where>
</sql>

相同文件内 引用 SQL 片段:

<!-- 查询时引用字段列表 -->
<select id="selectAll" resultType="User">
    SELECT 
        <include refid="Base_Column_List"/>  <!-- 插入字段 -->
    FROM user
</select>

<!-- 引用条件片段 -->
<select id="selectByCondition" resultType="User">
    SELECT * FROM user
    <include refid="Where_Clause"/>  <!-- 插入WHERE条件 -->
</select>

跨文件 引用 SQL 片段:

<!-- 引用 OtherMapper.xml 中的片段 -->
<include refid="com.example.OtherMapper.Base_Column_List"/>

传递参数到片段:

<!-- 定义带参数的片段 -->
<sql id="Order_By">
    ORDER BY ${orderColumn} ${orderDirection}
</sql>

<!-- 引用时传递参数 -->
<select id="selectUsers" resultType="User">
    SELECT * FROM user
    <include refid="Order_By">
        <property name="orderColumn" value="create_time"/>  <!-- 动态值 -->
        <property name="orderDirection" value="DESC"/>
    </include>
</select>

参考:

本章目录