1. 程式人生 > 程式設計 >Mybatis批量插入更新xml方式和註解方式的方法例項

Mybatis批量插入更新xml方式和註解方式的方法例項

前言

最近工作上遇到很多批量插入的場景,但是百度很難得到我想要的結果,而且查出來的效果不是很好~

所以就自己來寫一份給大家參考,希望對大家有用

Mybatis 批量插入註解形式

@Insert("<script> INSERT INTO t_device_policy "
   + "(id,device_id,type,policy,create_time,update_time) "
   + "VALUES "
   + "<foreach collection = 'list' item='list' separator=',' > "
   + " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy},#{list.createTime},#{list.updateTime}) "
   + "</foreach>"
   + "</script>")
 int insert(@Param(value = "list")List<DevicePolicy> list);

Mybatis 批量插入主鍵存在更新註解形式

@Insert("<script> INSERT INTO t_device_policy "
   + "(id,policy "
   + "VALUES "
   + "<foreach collection = 'list' item='list' separator=',#{list.policy}) "
   + "</foreach>"
   + "ON DUPLICATE KEY "
   + "UPDATE policy = VALUES(policy)"
   + "</script>")
 int insert(@Param(value = "list")List<DevicePolicy> list);

ON DUPLICATE KEY的使用場景大家知道嗎?

當你設計的資料庫表中的主鍵存在時更新對應的欄位,不存在則插入。

還有一種情況就是你設計的唯一主鍵存在時更新對應的欄位,不存在則插入。

大家可以根據自己的場景看是否需要該欄位~

Mybatis 批量更新註解形式

@Insert("<script> INSERT INTO t_device_policy "
   + "(id,#{list.policy}) "
   + "</foreach>"
   + "ON DUPLICATE KEY "
   + "UPDATE policy = VALUES(policy)"
   + "</script>")
 int insert(@Param(value = "list")List<DevicePolicy> list);

Mybatis 批量插入xml形式

 <insert id="batchAdd" parameterType="java.util.List">
  INSERT INTO t_student(uid,student_id,study_days)
  VALUES
  <foreach collection="list" item="item" index="index" separator=",">
   (#{item.uid},#{item.studentId},#{item.studyDays})
  </foreach>
 </insert>

Mapper中的方法為

 void batch(List<StudentPo> po)

Mybatis 批量插入主鍵更新xml形式

 <insert id="batchAdd" parameterType="java.util.List">
  INSERT INTO t_student(uid,#{item.studyDays})
  </foreach>
  ON DUPLICATE KEY UPDATE
  update_time = now()
 </insert>

Mapper中的方法為

 void batch(List<StudentPo> po)

總結

以上為Mybatis批量操作經常使用的部分,大家可以根據需要自行提取,如果有什麼問題可以留言哈~希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。