1. 程式人生 > >使用mybatis提供的各種標籤方法實現動態拼接Sql。使用sql片段提取重複的標籤內容

使用mybatis提供的各種標籤方法實現動態拼接Sql。使用sql片段提取重複的標籤內容

Sql中可將重複的sql提取出來,使用時用include引用即可,最終達到sql重用的目的,如下:

 
 

<select id="findUserByNameAndSex" parameterType="com.huida.po.User" resultType="com.huida.po.User">
<!-- select * from user where 1=1 and username like "%${username}%" and sex=#{sex} -->
  select * from user
  <!-- where標籤有兩個作用:
  1.替代where關鍵字
  2.會去掉第一個條件的and關鍵字,會自動加上1=1永真條件,也就是放當後面的條件為null時,執行永真條件
  -->
  <where>
    <if test="username!=null and username!=''">
      and username like "%${username}%"
    </if>
    <if test="sex!=null and sex!=''">
      and sex=#{sex}
    </if>
  </where>
</select>

 將where條件抽取出來,放到sql標籤中:

<sql id="user_where">
        <!-- where標籤有兩個作用:
            1.替代where關鍵字
            2.會去掉第一個條件的and關鍵字,會自動加上1=1永真條件,也就是放當後面的條件為null時,執行永真條件
         -->
        <where>
            <if test="username!=null and username!=''">
                and username like "%${username}%"
            
</if> <if test="sex!=null and sex!=''"> and sex=#{sex} </if> </where> </sql>

使用的時候使用include引用:

<select id="findUserByNameAndSex" parameterType="com.huida.po.User" resultType="com.huida.po.User">
        <!--
select * from user where 1=1 and username like "%${username}%" and sex=#{sex} --> select * from user <!-- 將where抽取成一個sql片段,用的時候通過id進行引入 --> <include refid="user_where"></include> </select>