-
application.yml配置属性文件内容(重点:开启批处理模式)
server: # 端口号 port: 8080 # MySQL连接配置信息(以下仅简单配置,更多设置可自行查看) spring: datasource: # 连接地址(解决UTF-8中文乱码问题 + 时区校正) # (rewriteBatchedStatements=true 开启批处理模式) url: jdbc:mysql://127.0.0.1:3306/bjpowernode?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # 用户名 username: root # 密码 password: xxx # 连接驱动名称 driver-class-name: com.mysql.cj.jdbc.Driver
-
循环插入 + 开启批处理模式(总耗时:1.7秒)(重点:一次性提交)
@Override public Result addBatchUser(UserDO entity) { //程序执行时间计时器 StopWatch stopWatch = new StopWatch(); //开始计时 stopWatch.start(); String name = entity.getName(); entity.setHasDel(false); entity.setCreatedTime(new Date()); entity.setModifyedTime(new Date()); //对密码数据进行加密处理 String md5PassWord = MD5Utils.md5(entity.getPassWord()); entity.setPassWord(md5PassWord); //开启批量处理模式 BATCH 、关闭自动提交事务 false SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false); //反射获取,获取mapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); for (int i = 0; i < 50000; i++) { entity.setName(name + i); //插入数据 mapper.insert(entity); } //一次性提交事务 sqlSession.commit(); //关闭资源 sqlSession.close(); //结束计时 stopWatch.stop(); log.info("执行时间" + stopWatch.getTotalTimeNanos() + "纳秒"); log.info("执行时间" + stopWatch.getTotalTimeMillis() + "毫秒"); log.info("执行时间" + stopWatch.getTotalTimeSeconds() + "秒"); return Result.success(); }
基于Spring提高批量向Mysql数据库插入数据效率的方案
最新推荐文章于 2022-10-30 20:51:11 发布