springboot批量更新实体_mybatis+mysql+springboot批量插入,批量更新数据
在开发过程中都会遇到批量的插入或者是更新数据,本人只写了一下自己在做的过程中遇到问题,写此篇文章的作用:第一是记录自己在工作过程中的问题。第二是方便同行的伙伴们避免出现这样的问题消耗太多的时间。废话不多说,直接上代码。
1.批量插入数据
Dao层:
void insertBatch(List userPermission);
*参数直接是一个List对象
Mapper.xml
resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
insert into user_permission ()
values
#{item.id,jdbcType=BIGINT},#{item.bid,jdbcType=BIGINT}, #{item.fid,jdbcType=BIGINT},#{item.buttonName,jdbcType=VARCHAR},#{item.buttonState,jdbcType=BIGINT},#{item.effective,jdbcType=BIGINT},#{item.createAt,jdbcType=TIMESTAMP}
id,bid,fid,button_Name,button_state,effective,create_at
*这里要值得注意的是:selectKey是用来自增长主键Id,如果使用的mybatis3.3.*以下的版本是有自增长的bug,mybatis3.3.*以上的版本是修复了该bug.
2.批量更新数据
Dao层:
void updateBatch(List userPermission);
*参数直接是一个List对象
Mapper.xml
update user_permission
when id=#{permission.id} then #{permission.effective}
when id=#{permission.id} then #{permission.updateAt}
id = #{permission.id}
*
一条记录update一次,性能比较差,容易造成阻塞。
MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。
UPDATE user_permission
SET name = CASE id
WHEN 1 THEN 'name1'
WHEN 2 THEN 'name2'
WHEN 3 THEN 'name3'
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。
以上是我写的最终SQL,仅供小伙伴们参考,臣妾退下了。
springboot批量更新实体_mybatis+mysql+springboot批量插入,批量更新数据相关推荐
- mybatis批量夺标添加_MyBatis+MySQL同时执行多条SQL,实现多表插入数据
相信很多人都遇到过往Mybatis的Mapper.xml文件粘贴SQL的时候,因为多了一个';'而导致SQL报错的情形吧. 难道就不能执行多条SQL了么?其实是可以的.在分表的情况下,这种需求是强烈的 ...
- Mysql数据库快速插入亿级数据
Mysql数据库快速插入亿级数据 接手一个项目,该项目运行了两三年了.接手的时候,只有一个部署文档和全部代码,再没有其他文档了,也没有其他任何人了解这个项目.好吧,试着深入了解吧.代码在测试环境跑来了 ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- mysql 百万级别 更新_mysql百万级数据高效插入和更新
测试环境:win10系统+16G内存+mysql5.7.25 1.创建测试表(表结构如下) 2.插入数据方法 @Override @Transactional(rollbackFor = Except ...
- MySQL十秒插入百万条数据
mysql数据库准备 private String Driver = "com.mysql.cj.jdbc.Driver";private String url ="jd ...
- mysql 通过存储过程 插入测试百万数据
#mysql -uroot -p123456create database gblfy; use gblfy create table test(name varchar(10),age int,he ...
- mysql命令行批量添加数据_mysql命令行批量插入100条数据命令
先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...
- Mysql创建触发器实现不同表的插入、更新、删除操作
说明:Mysql5.0以上的版本才支持下面的操作. Mysql 触发器的插入.更新.删除操作. 在这里建了两个表:其中这两个表的结构不一样,这里给表admin建立触发器 在对表admin操作的同时,触 ...
- mysql插入并更新(on duplicate key update)
Mysql插入数据,如果存在此数据,那么就更新这条数据,否则插入数据. 使用 on duplicate key update. 准备工作 建表 create table user_info(id in ...
最新文章
- 记录一下集成修改触发模式的过程
- 【mycat】简介及安装
- 通俗易懂的讲解区块链
- npm package.json中的dependencies和devDependencies的区别
- Xcode6中使用initWithTitle:title image:image selectedImage:自定义图片
- Android之在在EditText的xml里面配置了相关属性依然没有显示光标问题
- [费用流专题]Going Home,Minimum Cost,工作安排
- [css] 如何写高效的CSS?
- win主机上搭建php网站运行环境,Windows server 2008搭建php运行环境图文详解(php5.3)
- HTTPS时代全面到来,你准备好了吗?
- BZOJ 1597 [Usaco2008 Mar] 土地购买
- sqlserver复制表的结构、内容到另一个数据库
- vim学习、各类插件配置与安装【转】
- [异步图书].精通Python自然语言处理 pdf
- 2021年程序员平均工资
- apk一般放服务器哪个位置,apk放在服务器
- 小学生计算机课如何上,如何上好小学信息技术课
- 公司用的非标普通自动化用单片机还是plc_自动化专业现在吃香吗?
- 浙江省计算机专业专科院校排名,浙江省高职院校“五强”
- Matlab向量场可视化