Springboot+Mybatis(Mysql 、Oracle) 注解和使用Xml兩種方式批量添加數據


1、使用注解的方式批量添加數據,在該方法中,傳進來的參數是一個List集合,使用一個foreach 循環解析集合的數據,最后再批量保存到數據庫

 代碼如下:

//批量保存
@Insert({"<script>",
"insert into QUESTION_BANK (NAME, SUBJECT, TYPE,OPTION_A,OPTION_B,OPTION_C,OPTION_D,OPTION_E,OPTION_F,ANSWER,IS_EXISTENCE) ",
"SELECT A.* FROM (",
"<foreach collection ='list' item='questionBanks' separator ='union all' >",
"(SELECT " +
"#{questionBanks.name} NAME," +
"#{questionBanks.subject} SUBJECT," +
"#{questionBanks.type} TYPE," +
"#{questionBanks.optionA} OPTION_A," +
"#{questionBanks.optionB} OPTION_B," +
"#{questionBanks.optionC} OPTION_C," +
"#{questionBanks.optionD} OPTION_D," +
"#{questionBanks.optionE} OPTION_E," +
"#{questionBanks.optionF} OPTION_F," +
"#{questionBanks.answer} ANSWER," +
"#{questionBanks.isExistence} IS_EXISTENCE FROM DUAL)",
"</foreach> ) A",
"</script>"
})
int saveAll(List<QuestionBank> questionBanks);
 
   

第二種方式是springboot結合mybatis 使用xml文件時候的批量添加數據,在該方法中,傳進來的同樣是一個List集合數據,需要注意的地方已標紅

 代碼如下:

<insert id="addUserGroupRelationList" parameterType="java.util.List">
INSERT All
<foreach collection="list" item="item" index="index">
INTO USERGROUP_RELATION(ENTIEY_UUID,PARENT_UUID,SUPERIOR) VALUES
(
#{item.entieyUuid,jdbcType=VARCHAR},
#{item.parentUuid,jdbcType=VARCHAR},
#{item.superior,jdbcType=NUMERIC}
)
</foreach>
SELECT 1 FROM dual
</insert>
 
   

 

上面兩個添加語句使用的數據庫都是Oracle,下面再來介紹一下使用XML 文件往Mysql數據庫批量添加數據,不同的數據庫批量添加使用的語句還是有一些小區別的,下面直接看代碼吧:

  <insert id="saveAllExcelData" parameterType="java.util.List">
           INSERT  INTO sys_veterinary(
                 name,
                 address,
                 longitude,
                 latitude,
                 phone,
                 store_keeper,
                 scope,
                 skill)values
         <foreach collection="list" item="item" index="index" separator=",">
          (
           #{item.name,jdbcType=VARCHAR},
           #{item.address,jdbcType=VARCHAR},
           #{item.longitude,jdbcType=VARCHAR},
           #{item.latitude,jdbcType=VARCHAR},
           #{item.phone,jdbcType=VARCHAR},
           #{item.storeKeeper,jdbcType=VARCHAR},
           #{item.scope,jdbcType=VARCHAR},
           #{item.skill,jdbcType=VARCHAR}
           )
         </foreach>
  </insert>

 新增批量刪除:(oracle數據庫)

 <delete id="deleteById" parameterType="java.util.List">
        delete from User t where id in
        <foreach item="item" collection="list" open="(" separator="," close=")">
            #{item.userId,jdbcType=VARCHAR}     //傳進來的是實體類集合,只要獲取每條數據的id即可
        </foreach>
</delete>

 

小提示:一開始可以先用sql語句去數據庫中運行添加,看能否成功添加,一般sql語句可以正常執行,再轉換一下思路就能在代碼中實現了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM