在spring batch中,我们经常使用spring提供的jdbcTemplate进行数据库操作。

假设有一张表People.我们需要插入多条数据。处理的方法有两种:

第一种方法是对每一个数据,都执行一直insert命令:

jdbcTemplate.update(INSERT_PEOPLE_QUERY, people.getFirstName(), people.getLastName());

第二种方法是使用batchUpdate的方法:

jdbcTemplate.batchUpdate(INSERT_PEOPLE_QUERY, transformToObjects(peoples));


private List<Object[]> transformToObjects(List<People> peoples) {
        return from(peoples).transform(new Function<People, Object[]>() {
            @Override
            public Object[] apply(People people) {
                return new Object[]{people.getFirstName(), people.getLastName()};
            }
        }).toList();
    }


如果需要大量更新数据,并且使用的jdbc driver支持batchUpdate的情况下,使用batchUpdate会比直接执行逐行执行update效率快一个数量级。但     如果jdbc不支持batchUpdate,那么jdbcTemplate的batchUpdate在其内部仍然是逐行执行。

我使用postgreSQL进行试验:

当需要插入1000个People时,逐行插入需要4秒,使用batchUpdate需要时间不到1秒

当需要插入10000个People时,逐行插入需要17秒,使用batchUpdate仅仅需要1秒

使用spring jdbc的batchUpdate功能提高性能相关推荐

  1. spring 3.x 学习笔记_spring mvc、spring jdbc 实现网站的登录注册功能

    使用spring mvc.spring jdbc 实现网站的登录注册功能 1.        据业务模型 创建model 一般实现序列化 2.        用spring 注解(@Repositor ...

  2. Druid Spring JDBC Servlet 实现登录功能

    Druid 数据库连接池的实现技术 Spring JDBC 需要使用数据库连接池,Spring JDBC 提供非常好用的查询数据.插入数据.更新数据的API 开发步骤: 1.数据库的设计(创建数据库. ...

  3. 对于大批量赋值功能,使用if判断是否能提高性能

    场景: 如果对某变量进行赋值,是否需要判断一下,如果相等就不用赋值,这样会不会提高性能. 代码如下: 1 string a = "1234567890"; 2 string b = ...

  4. vt功能对计算机有影响吗,虚拟化是什么,CPU开启虚拟化和关闭虚拟化对电脑有影响吗?具体有什么影响,关闭虚拟化可以提高性能吗?...

    虚拟化简写是VT(Virtualization Technology). 它是英特尔在其用户平台上开发的一个虚拟化支持系统,旨在帮助在硬件层面实现虚拟化技术.在此之前,虚拟化只能使用软件来虚拟化底层架 ...

  5. Spring JDBC-使用Spring JDBC访问数据库

    概述 使用Spring JDBC 基本的数据操作 更改数据 返回数据库表的自增主键值 批量更改数据 查询数据 使用RowCallbackHandler处理结果集 使用RowMapperT处理结果集 R ...

  6. 使用Spring JDBC进行数据访问 (JdbcTemplate/NamedParameterJdbcTemplate/SimpleJdbcTemplate/SimpleJdbcCall/Stor)

    http://www.cnblogs.com/webcc/archive/2012/04/11/2442680.html 使用Spring JDBC进行数据访问 11.1. 简介 Spring JDB ...

  7. Spring JDBC详解

    <Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 一.概述 在Spring JDBC模块中,所有的 ...

  8. java异步处理_SpringBoot异步开发之异步请求,在高并发的情况下,提高性能

    何为异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果一个请求需要进行IO操作,比如 ...

  9. Web应用程序中的Spring JDBC入门

    在上一篇文章中,我已经向您展示了如何设置基本的Spring 3 MVC Web应用程序 . 重复使用该项目设置作为模板,我将向您展示如何增强它以与JDBC一起使用. 有了它,您可以存储和检索数据库中的 ...

最新文章

  1. mysql布隆过滤器源码_通过实例解析布隆过滤器工作原理及实例
  2. java面试题001
  3. OpenCASCADE:使用扩展数据交换 XDE之保存视图
  4. 【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图
  5. react使用link跳转传递参数_React-Typescript之路由跳转(使用this.props.history.push)
  6. 最受欢迎的java技术_最受欢迎的Java环境
  7. java jdbc 登录_java web JDBC 判断用户登录问题!
  8. matlab 粘连分割代码,【求助】图像中粘连字符切分代码,求注释!!!
  9. final关键字---Java
  10. Tableview最后一行无法显示或者显示不全的问题IOS
  11. 不是每个人的一生都会有贵人相助
  12. springboot sessionfactory_Spring Boot从入门到精通(五)多数据源配置实现及源码分析...
  13. 24.root, alias
  14. TensorFlow 安装
  15. 利用Chrome与迅雷下载斗鱼录播视频
  16. vue 项目npm install奇怪错误处理办法(一)
  17. t分布f分布与样本均值抽样分布_常见的统计分布--数据分析
  18. 12.flowable 流程实例 终止流程
  19. ppt怎么把图片做成翻书效果_ppt怎么做出翻页效果图文教程
  20. android 监测鼠标滑轮,android2.3 监控鼠标滑动事件

热门文章

  1. php 实现贪吃蛇游戏,HTML5 贪吃蛇游戏实现思路及源代码_html5教程技巧
  2. 测试学开发——第一课:java学习路程
  3. (软件工程复习核心重点)第二章可行性研究-第四节:数据字典
  4. windbg-调试技巧(定长、不定长参数thiscall平衡堆栈方式不同)
  5. linux系统最大打开文件数(/etc/security/limits.conf:待更新其他设置)
  6. 浅谈渗透测试之前期信息搜集
  7. Redis为什么默认16个数据库,干什么用?
  8. 二十一、补码 (计算机最小的单位为位)
  9. 如何获得Windows聚焦壁纸0726
  10. selenium自动化测试——常见的八种元素定位方法