软件编程
位置:首页>> 软件编程>> java编程>> Mybatis批量插入更新xml方式和注解方式的方法实例

Mybatis批量插入更新xml方式和注解方式的方法实例

作者:马佩  发布时间:2022-06-17 18:09:09 

标签: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,device_id,type,policy "
  + "VALUES "
  + "<foreach collection = 'list' item='list' separator=',' > "
  + " (#{list.id},#{list.deviceId},#{list.policyType},#{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,device_id,type,policy "
  + "VALUES "
  + "<foreach collection = 'list' item='list' separator=',' > "
  + " (#{list.id},#{list.deviceId},#{list.policyType},#{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,student_id,study_days)
 VALUES
 <foreach collection="list" item="item" index="index" separator=",">
  (#{item.uid},#{item.studentId},#{item.studyDays})
 </foreach>
 ON DUPLICATE KEY UPDATE
 update_time = now()
</insert>

Mapper中的方法为


void batch(List<StudentPo> po)

总结

以上为Mybatis批量操作经常使用的部分,大家可以根据需要自行提取,如果有什么问题可以留言哈~希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

来源:https://juejin.im/post/5ddb49285188257353094a47

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com