1. 程式人生 > >Mybatis常用標籤

Mybatis常用標籤

where標籤的使用
  where後面跟查詢條件 簡化sql語句中判斷條件的書寫

set標籤的使用(最後一個逗號會被忽略)
  例:
    <update id="userUpdate" parameterType="user">
      update user
        <set>
          <if test="id!=null and id!=''">
            id=#{id},
          </if>
          <if test="name!=null and name!=''">
            name=#{name},
          </if>
          <if test="gender!=null and gender!=''">
            gender=#{gender},
          </if>
        </set>
    </update>

trim標籤的使用
  prefix:字首
  suffix:字尾
  prefixOverrides:忽略第一個指定分隔符
  suffixOverrides:會略最後一個分隔符
    <select id="user" parameterType="user" resultType="User">
      select * from user
        <trim prefix="WHERE" prefixoverride="and | or">
          <if test="id!=null and id!=''">
            id=#{id}
          </if>
          <if test="name!=null and name!=''">
            and name=#{name}
          </if>
          <if test="gender!=null and gender!=''">
            and gender=#{gender}
          </if>
         </trim>
  </select>

mybatis foreach標籤的使用

可以利用<foreach>標籤實現sql條件的迴圈,可完成類似批量的sql

  mybatis接受的引數分為:
    (1)基本型別(2)物件(3)List(4)陣列(5)Map

  引數:
    collection:要迴圈的集合
    index:定一個名字,用於表示在迭代過程中,每次迭代到的位置
    item:集合中每一個元素進行迭代時的別名
    open:以什麼開始
    close:以什麼結束
    separator:迴圈內容之間以什麼分隔
    例:
  1)批量新增
    <insert id="add" parameterType="List">
      insert into user(id,name,gender) values
        <foreach collection="list" item="user" open="(" close=")" separator=",">
          #{user.id},#{user.name},#{user.gender}
        </foreach>
    </insert>

    若list有兩條資料 則執行的sql語句為:
      insert into user(id,name,gender) values ("1","張三","男"),("2","李四","女")

    mapper介面:
      void add(List<User> users);

    2)批量刪除
      <delete id="deleteUser" parameterType="array">
        delete from user where id in
          <foreach collection="array" item="id" open="(" close=")" separator=",">
            #{id}
          </foreach>
      </delete>
如果有三條資料要刪除 執行的sql語句為:
    delete from user where id in(1,2,3)

sql標籤的使用:
    通過sql片段達到程式碼重複利用
      例:
        <sql id="sqlcont">
          select count(*)
        </sql>

        <sql id="sqlselect">
          select *
        </sql>
        <sql id="sqlcontent">
          from user
        </sql>

          <select id="findUser" parameterType="user" resultType="User">
            <include refid="sqlcont"/>
            <include refid="sqlcontent"/>
          </select>