当前位置: 首页 > news >正文

云浮营销建站公司桂林 网站建设

云浮营销建站公司,桂林 网站建设,2017网络公司排名,wordpress 作者页文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType#xff1a;批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE… 文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE3.2 使用ExecutorType.BATCH3.3 ExecutorType.REUSE 3.半 拓展4. 总结5. 多线程版本 Excel 5s内导入20w条数据 1. 生成20w条数据 1.1 使用Excel 宏生成20w条数据 打开Excel按下AltF11打开VBA编辑器。 在VBA编辑器中选择插入 - 模块然后将以下代码粘贴到模块中 Sub GenerateData()Dim i As LongFor i 1 To 200000Cells(i, 1).Value i 插入IDCells(i, 2).Value 张三 i 插入姓名可以根据需要自定义命名规则Cells(i, 3).Value Int((50 - 20 1) * Rnd 20) 插入随机年龄示例为20-50之间的随机数Next i End Sub 按下F5执行宏即可生成20万条数据。 1.2 生成成功 因为数据量较大所以需要稍微等上一小段时间 2. ExecutorType批量操作执行器类型 在MyBatis中ExecutorType是一种枚举类型用于指定SQL语句执行的方式。其中ExecutorType.BATCH和ExecutorType.SIMPLE是两种常见的执行方式。 2.1 ExecutorType.SIMPLE ExecutorType.SIMPLE是MyBatis框架中的一种执行器类型用于执行SQL语句并返回结果集。在这种执行器类型下每个SQL语句的执行请求都将打开一个新的数据库连接执行完毕后立即释放连接适用于小型应用或轻负载的情况。 特点 ExecutorType.SIMPLE是默认的执行方式。每次执行SQL语句时都会打开一个新的PreparedStatement对象。每条SQL语句都会立即被执行并提交到数据库。每个SQL语句的执行请求都将打开一个新的数据库连接执行完毕后立即释放连接适用于常规的单个或少量SQL操作。 2.2 ExecutorType.BATCH ExecutorType.BATCH会将一批SQL语句集中在一起批量执行减少了与数据库的交互次数提高性能。多条SQL语句会一起提交到数据库执行可以提升执行效率。可以通过sqlSessionFactory.openSession(ExecutorType.BATCH)方法手动触发批量执行。适用于需要执行大量SQL操作的场景如批量插入、更新或删除多条记录。 2.3 ExecutorType.REUSE 当多次调用相同的SQL语句时会重用已编译的SQL语句和执行计划。适用于单条SQL语句的重复执行例如在一个循环中多次执行相同的SQL语句。每次执行都会创建一个新的Statement对象但会重用已编译的SQL语句和执行计划以提高执行效率。 3. 20w条数据直接插入数据库 dao 层 的代码 Insert(insert into excel(id,name,age) values (#{id},#{name},#{age})) void insert(Man man);3.1 使用ExecutorType.SIMPLE public void insert1() {//用于记录读取数据所需要的时间long start0 System.currentTimeMillis();//ExcelUtil hutool工具类用来读取Excel文件ExcelReader reader ExcelUtil.getReader(FileUtil.file(C:\\Users\\26896\\Desktop\\test.xlsx), sheet1);//将读取到的 reader 转化为 ListMan集合ListMan mans reader.readAll(Man.class);//读取数据的结束时间同时也是写入数据库的开始时间long start System.currentTimeMillis();//sqlSessionFactory是通过ioc容器注入的 设置其SqlSession的执行器格式ExecutorType.SIMPLE默认SqlSession sqlSession sqlSessionFactory.openSession(ExecutorType.SIMPLE);ExcelDao mapper sqlSession.getMapper(ExcelDao.class);//循环将ListMan中的数据插入数据库for (Man man : mans) {mapper.insert(man);}sqlSession.commit();long end System.currentTimeMillis();sqlSession.close();System.out.println(最终的结果为 (start - start0) );System.out.println(最终的结果为 (end - start) );}执行结果 3.2 使用ExecutorType.BATCH rewriteBatchedStatementstrue 当该参数设置为true时MySQL会对批量操作进行重写将多个SQL语句合并成一条批量执行的SQL语句。这样可以减少网络传输和数据库连接的开销从而提高批量操作的效率。 public String insert2() {long start0 System.currentTimeMillis();ExcelReader reader ExcelUtil.getReader(FileUtil.file(C:\\Users\\26896\\Desktop\\test.xlsx), sheet1);ListMan mans reader.readAll(Man.class);long start System.currentTimeMillis();SqlSession sqlSession sqlSessionFactory.openSession(ExecutorType.BATCH);ExcelDao mapper sqlSession.getMapper(ExcelDao.class);for (Man man : mans) {mapper.insert(man);}sqlSession.commit();long end System.currentTimeMillis();sqlSession.close();System.out.println(读取最终的结果为 (start - start0) );System.out.println(插入数据库最终的结果为 (end - start) );return null;}执行结果 3.3 ExecutorType.REUSE ExecutorType.REUSE 本身不做验证这里主要比较其它两个区别但是都到这里啦就写上 public void insert3() {long start0 System.currentTimeMillis();ExcelReader reader ExcelUtil.getReader(FileUtil.file(C:\\Users\\26896\\Desktop\\test.xlsx), sheet1);ListMan mans reader.readAll(Man.class);long start System.currentTimeMillis();SqlSession sqlSession sqlSessionFactory.openSession(ExecutorType.REUSE);ExcelDao mapper sqlSession.getMapper(ExcelDao.class);for (Man man : mans) {mapper.insert(man);}sqlSession.commit();long end System.currentTimeMillis();sqlSession.close();System.out.println(读取最终的结果为 (start - start0) );System.out.println(插入数据库最终的结果为 (end - start) );}3.半 拓展 吃瓜观众 歌歌 呀既然ExecutorType.SIMPLE适合执行一个语句那就用MyBatis 的,将20w条数据拼接为1条。这样是不是就快了 歌歌非常好 xml代码 insert idaddinsert into excel(id,name,age) valuesforeach collectionlist itemman separator,(#{man.id},#{man.name},#{man.age})/foreach/insertservice代码 AutowiredExcelDao excelDao;public String add2() {long start0 System.currentTimeMillis();ExcelReader reader ExcelUtil.getReader(FileUtil.file(C:\\Users\\26896\\Desktop\\test.xlsx), sheet1);ListMan mans reader.readAll(Man.class);long start System.currentTimeMillis();excelDao.add(mans);long end System.currentTimeMillis();System.out.println(最终的结果为 (start - start0) );System.out.println(最终的结果为 (end - start) );return null;}4. 总结 在需要将大量数据通过java程序放入数据库时 可以通过sqlSessionFactory.openSession(ExecutorType.BATCH)方法手动触发批量执行。并且可以通过在链接数据库的时候加上rewriteBatchedStatementstrue来开始数据库的批处理操作 5. 多线程版本 点个关注不迷路 个人主页 个人主页
http://www.hkea.cn/news/14516450/

相关文章:

  • 显示网站正在维护是什么情况国际战事最新消息
  • 网站建设需要用到的软件建筑公司取名参考
  • 网站域名哪里买建网站公司专业
  • 上海加盟网网站建设网站建设300元
  • 欧美网站与中国网站区别能做wordpress的网站
  • 如何做学校的网站设计html做网站自适应宽度
  • zzcms网站开发学校网站建设管理相关规定
  • 做经营网站怎么赚钱吗网站建设尢金手指专业
  • 静态网站设计wordpress换身 变身
  • 郑州网站建设知名公司网络游戏开发培训
  • 网站新闻打不开装修行业门户网站模板
  • 网站的建设主机费用定制营销型网站
  • 建设工程质量管理条例网站数据库做网站
  • 网站怎么收录到百度电子商务网站建设参考文献
  • 如何让搜索引擎收录你的网站广西网络网站建设
  • 建筑设计案例网站推荐南昌建站方案
  • 怎么找网站开发公司天猫购买
  • 建设网站的经验诚一网站推广
  • 宜飞思工业设计网站seo入门培训学校
  • 中英文外贸网站模板 生成静态html重庆公司社保最低档每月多少钱
  • 谷歌seo网站推广上海专业网站建设哪家好
  • 美橙互联网站建设好不好二七网站建设
  • 有没有免费注册域名的网站php7 wordpress 无法安装
  • 南昌seo网站管理如何建立网站视频
  • 电商网站运维怎么做wordpress自助友链
  • 响应式网站pad尺寸wordpress 评论小工具
  • 初学网站建设选择做华为网站的目的和意义
  • 外文网站建站网上有做logo的网站吗
  • 简述电子商务网站的内容设计与开发做网络销售哪些网站比较好
  • 国外app界面设计网站网站到期可以续费