在某些情况下,可能需要将一批记录插入到数据库中。如果你对每条记录调用一个插件的方法,SQL语句将被重复编译,造成系统缓慢进行。
在上述情况下,你可以使用 JdbcTemplate BATCHUPDATE()方法来执行批量插入操作。用这种方法,该语句只被编译一次,执行多次。
详见 JdbcTemplate 类的 BATCHUPDATE()示例。
//insert batch example
public void insertBatch(final List<Customer> customers){String sql = "INSERT INTO CUSTOMER " +"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) throws SQLException {Customer customer = customers.get(i);ps.setLong(1, customer.getCustId());ps.setString(2, customer.getName());ps.setInt(3, customer.getAge() );}@Overridepublic int getBatchSize() {return customers.size();}});
}
或者,可以直接执行SQL。
//insert batch example with SQL
public void insertBatchSQL(final String sql){getJdbcTemplate().batchUpdate(new String[]{sql});}
Spring 的 bean 配置文件
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO"><property name="dataSource" ref="dataSource" /></bean><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/yiibaijava" /><property name="username" value="root" /><property name="password" value="password" /></bean></beans>

执行它

package com.yiibai.common;import java.util.ArrayList;
import java.util.List;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yiibai.customer.dao.CustomerDAO;
import com.yiibai.customer.model.Customer;public class App
{public static void main( String[] args ){ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Customer.xml");CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");Customer customer1 = new Customer(1, "yiibai1",21);Customer customer3 = new Customer(2, "yiibai2",22);Customer customer2 = new Customer(3, "yiibai3",23);List<Customer>customers = new ArrayList<Customer>();customers.add(customer1);customers.add(customer2);customers.add(customer3);customerDAO.insertBatch(customers);String sql = "UPDATE CUSTOMER SET NAME ='BATCHUPDATE'";customerDAO.insertBatchSQL(sql);}
}
在本例中,插入三条顾客的记录,并批量更新所有客户的名字。
下载代码 – http://pan.baidu.com/s/1jGTXfgi

Spring JdbcTemplate batchUpdate() 实例相关推荐

  1. Spring JdbcTemplate查询实例

    这里有几个例子向您展示如何使用JdbcTemplate的query()方法来查询或从数据库提取数据.整个项目的目录结构如下: 1.查询单行数据 这里有两种方法来查询或从数据库中提取单行记录,并将其转换 ...

  2. Spring JdbcTemplate+JdbcDaoSupport实例

    在Spring JDBC开发中,可以使用 JdbcTemplate 和 JdbcDaoSupport 类来简化整个数据库的操作过程. 在本教程中,我们将重复上一篇文章Spring+JDBC例子,看之前 ...

  3. Spring 的持久化实例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...

    2019独角兽企业重金招聘Python工程师标准>>> 一.表(这里用mysql,数据库名为yiibai) CREATE TABLE `customer` (`CUST_ID` in ...

  4. spring JdbcTemplate数据库查询实例

    使用JdbcTemplate查询数据库的例子 配置等可以看前一篇文章: Spring JdbcTemplate实例 创建数据库 可以使用下面的SQL create table A( `id` INT ...

  5. Spring JdbcTemplate实例

    简介 Spring JdbcTemplate类是Spring提供的简化数据库操作的一个类,这个类使用了模板方法模式,可以减少一些重复代码.这里主要演示一下 JdbcTemplate 的使用. 完整的代 ...

  6. 【SSM框架系列】Spring - JdbcTemplate声明式事务

    JdbcTemplate概述 以往使用jdbc时,每次都需要自己获取PreparedStatement,执行sql语句,关闭连接等操作.操作麻烦冗余,影响编码的效率. Spring把对数据库的操作在j ...

  7. Spring JdbcTemplate使用

    该篇博客主要阐述关于Spring中jdbcTemplate,jdbcTemplate大大方便了jdbc的一些重复性操作 一.jdbcTemplate更新数据库常用方法 update (更新数据) ba ...

  8. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  9. 数据库操作技术--Spring jdbcTemplate

    一丶jdbcTemplate是什么 jdbcTemplate是Spring提供的一种操作数据库的技术,是对Jdbc的封装.语法非常接近DBUtils. 使用JdbcTemplate可以直接操作数据库, ...

最新文章

  1. R语言ggplot2可视化将图像标题(title)居中显示实战
  2. 4.PHP正则表达式与数组
  3. python自学_为什么要选择Python怎样系统的自学并快速学习Python
  4. php如何替换 前的空格,php空格如何替换
  5. Ansible 快速入门
  6. 史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析
  7. [安卓] 7、页面跳转和Intent简单用法
  8. 怎么建立计算机共享文件夹,如何在局域网内建立共享文件夹
  9. oracle 学习第一天
  10. Java新特性之Nashorn的实例详解
  11. MySQL日期处理-查询间隔数据
  12. 胃net的放大内镜_胃淀粉样变性放大内镜表现 | 内镜集锦
  13. arm体系结构:arm920t
  14. 2022QS世界大学学科排名出炉,计算机学科有哪些信息值得关注?
  15. linux为360路由器刷机,[详细]360路由器刷openwrt、不死uboot、双系统 、wifi中继
  16. IDEA TOP TIPS
  17. 1、异常值(outliers)检测综述:定义、检测方法、影响、修正
  18. 受够了百度网盘?如何注册无限容量的Google Drive网盘
  19. mysql commit work_数据库commit work
  20. Tracup|10个有效的工作习惯,成功的例子和技巧

热门文章

  1. Qt Creator从Blender导出3D资产
  2. QT的QScriptValueIterator类的使用
  3. C语言多种方法实现同一个功能
  4. c++ 智能指针_详解 C++ 11 中的智能指针
  5. 9_InfluxDB常用函数(二)选择类函数(TOP() BOTTOM() FIRST() LAST() MAX() MIN() PERCENTILE())
  6. Strom程序的并发机制,配置并行度(代码实现)、动态改变并行度,local or shuffle分组,分组的概念以及分组类型
  7. 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例
  8. 6进程原语:wait()和waitpid()函数
  9. Java代码书写规范
  10. mysql 备份工具xtrabackup全备与还原图解