美文网首页我爱编程
使用Mybatis 对Oracle数据库进行批量新增和批量修改

使用Mybatis 对Oracle数据库进行批量新增和批量修改

作者: 坚果MAN | 来源:发表于2017-12-05 21:20 被阅读487次

使用Mybatis操作Oracle对同一表进行批量新增和批量修改与Mysql是有区别的。

批量新增

SEQ_ANSWER_ID自增序列,SEQ_ANSWER_ID.Nextval是下一个要添加的ANSWER_ID,
有序列操作的可以这样些,没有序列操作的,可以把 ANSWER_ID字段和 SEQ_ANSWER_ID.Nextval去掉。

<insert id="insertAnswerList" parameterType="java.util.List">
       insert into T_E_QUESTION_ANSWER (
        ANSWER_ID,
        CREATED_BY,
        CREATED_DATE,
        UPDATED_BY,
        UPDATED_DATE,
        POLICY_ID  
        ) 
                select SEQ_ANSWER_ID.Nextval,c.*  from 
         (
         <foreach collection="list" index="index" item="item" separator="union all">
        select 
           #{item.createdBy,jdbcType=VARCHAR} as createdBy,
           sysdate as createdDate, 
           #{item.updatedBy,jdbcType=VARCHAR} as updatedBy,
           sysdate as updatedDate,
           #{item.policyId} as policyId
        from dual
        </foreach>
         ) c
   </insert>

批量修改,Oracle 以begin开始,end结束

<update id="updateQuotationQuestionAnswerList" parameterType="java.util.List">
         begin 
         <foreach collection="list" item="item" separator=";">
            update  T_E_QUOTATION_QUESTION_ANSWER
            set ANSWER = #{item.answer,jdbcType=INTEGER}, 
            DISEASE_CURE = #{item.diseaseCure,jdbcType=VARCHAR}, 
            DISEASE_BEGIN_TIME = #{item.diseaseBeginTime,jdbcType=VARCHAR},
            CURE_RESULT = #{item.cureResult,jdbcType=VARCHAR}, 
            HOSPITAL_DOCTOR = #{item.hospitalDoctor,jdbcType=VARCHAR},
            PART_D_ANSWER = #{item.partDAnswer,jdbcType=VARCHAR},
            UPDATED_BY = #{item.updatedBy,jdbcType=VARCHAR},
            UPDATED_DATE = sysdate
            where ANSWER_ID = #{item.answerId} 
          </foreach>
          ;end;
   </update>

相关文章

网友评论

    本文标题:使用Mybatis 对Oracle数据库进行批量新增和批量修改

    本文链接:https://www.haomeiwen.com/subject/ewthixtx.html