Mybatis批量插入(oracle)

有时我们需要批量想数据库中插入数据,如果通过循环一条一条的向数据库中插入,数据量大时容易造成阻塞,不建议使用。其实mybatis自身有很好的实现方式

1、批量插入

<insert id="batchInsertCoursePlan" parameterType="java.util.List" >
 <selectKey resultType="Integer" keyProperty="id" order="BEFORE"> 
             SELECT COURSEARRANGEMENT_SQ.NEXTVAL FROM dual
  </selectKey> 
   INSERT INTO XTEL_CourseArrangement(ID, COURSEID,TIME,CLASSNUMBER)
         SELECT COURSEARRANGEMENT_SQ.NEXTVAL, m.* FROM(
         <foreach collection="list"  index="index" item="coursePlan"  separator="union all">
          select
             #{coursePlan.courseID} as COURSEID,
             #{coursePlan.time} as TIME,
             #{coursePlan.classNumber} as CLASSNUMBER
           from dual
         </foreach>
         )m
</insert>

 2、批量更新

<update id="updateBatch"  parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
        update T_CITY_INDEX t
        set
        t.city_name= #{item.cityName,jdbcType=VARCHAR} ,
        t.district_name= #{item.districtName,jdbcType=VARCHAR} ,
        where t.id = #{item.id,jdbcType=NUMERIC}
    </foreach>
</update>

  

posted @ 2018-08-20 19:30  小哥z  阅读(402)  评论(0编辑  收藏  举报