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
投稿
猜你喜欢
- Lambda表达式无法抛出异常1.Demo 例子错误提示 - Unhandled exception: java.io.IOExceptio
- 反射方式获取JPA Entity属性和值在记录日志或者调试的时候,往往需要输出数据库查询或者写入的值,或者在接 * 互的时候,可能需要将实体转
- 1:Maven命令下载源码和javadocs当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven
- java 反射机制:测试实体类以Human为例/** * Project: Day12_for_lxy * Created: Lulu *
- 1、profiles是什么?有什么作用在maven构建的项目都存在一个pom.xml的项目对象模型配置文件,用于约束项目(如:jar包管理、
- Mybatis的Dao层实现传统开发方式编写UserDao接口public interface UserDao {  
- 本文主要介绍了25行Java代码将普通图片转换为字符画图片和文本的实现,分享给大家,具体如下:原图生成字符画文本(像素转换字符显示后,打开字
- 背景最近引入了 Nacos Config 配置管理能力,说起来用法很简单,还是踩了三个坑。Nacos Config 的 nacos 的帐号密
- 用途项目中使用了 dubbo,注册中心使用的 zookeeper,使用 zookeeper 实现了一个简单的分布式锁(依赖 curator)
- Spring main方法调用Dao层和Service层的方法在web环境中,一般serviceImpl中的dao之类的数据库连接都由容器启
- 如图所示的效果相信大家都不陌生,我们可以使用很多种方法去实现此效果,这里自己采用CountDownTimer定时器简单封装下此效果,方便我们
- Swing组件中的事件处理专门用于响应用户的操作,例如,响应用户的鼠标单击、按下键盘等操作。在Swing事件处理的过程中,主要涉及三类对象:
- 背景最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上
- 标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者
- 在项目中,分页是一个项目中必不可少的,它可以防止我们从数据库中进行大量数据查询时速度变慢,提高我们的查询效率。1、定义分页模型:PageMo
- 在没介绍正文之前,先给大家介绍下websocket的背景和原理:背景在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双
- 前言Springboot应用在启动的时候分为两步:首先生成 SpringApplication 对象 ,运行 SpringApplicati
- controller传boolean形式值@GetMapping("/check-cart")public List&l
- java 读取本地文件实例详解用javax.xml、w3c解析实例代码:package cn.com.xinli.monitor.utils
- 定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interf