1. 程式人生 > >Mybatis 批量操作(增、刪、改)操作(資料庫 oracle 11g)

Mybatis 批量操作(增、刪、改)操作(資料庫 oracle 11g)

1、批量更新

oracle 和 Mysql的語法有一些,差異,使用時注意
<!--oracle 11g 語法-->
  <update id="batchUpdate"  parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
      update tableName
      set yqb = #{item.yqb}
      where id = ${item.id}
    </foreach>
  </update>

<!--mysql語法-->
  <update id="batchUpdate"  parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
      update tableName
      set yqb = #{item.yqb}
      where id = ${item.id}
    </foreach>
  </update>

2、批量刪除

注:oracle資料庫in查詢數量最多支援1000個,超過會報錯;使用需謹慎

  <delete id="batchDelete"  parameterType="java.util.List">
    delete from tableName 
    where id in (
      <foreach collection="list" item="item" index="index" open="" close="" separator=",">
        #{item,jdbcType = VARCHAR}
      </foreach>
    )
  </delete>

3、批量新增

注:foreach標籤底層使用的遞迴的方式實現,如果插入數量過多有可能導致棧溢位錯誤;需謹慎使用

  <insert id="batchInsert"  parameterType="java.util.List">
    insert into tableName(id,name,age)
    <foreach collection="list" item="item" index="index" open="" close="" separator="union all">
      select #{item.id,jdbcType = VARCHAR},#{item.name,jdbcType = VARCHAR},#{item.age,jdbcType = VARCHAR}
      from dual
    </foreach>
  </insert>