Spring JdbcTemplate批量操作数据库

个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5769732.html

还是分两部分:解决什么问题和怎么做。

解决什么问题

提升数据操作性能,因为批量操作可以减少网络来回次数。

怎么做

方法1:使用jdbcTempalte的batchUpdate方法,第二个参数传入接口BatchPreparedStatementSetter接口,该接口需要实现两个方法,getBatchSize()用于获得该批数量,setValues(PreapredStatement ps, int i)用于设置每个PreparedStatement,以插入为例:

 1     int batchInsert(final List<Stock> stockList)
 2     {
 3         logger.info("batchInsert() begin, stockList.size="+stockList.size());
 4         int[] updatedCountArray = getJdbcTemplate().batchUpdate("insert into stock(id,code,name) value(?,?,?)", new BatchPreparedStatementSetter() {
 5
 6             public void setValues(PreparedStatement ps, int i) throws SQLException {
 7                 // TODO Auto-generated method stub
 8                 ps.setLong(1, stockList.get(i).getId());//要注意,下标从1开始
 9                 ps.setString(2, stockList.get(i).getCode());
10                 ps.setString(3, stockList.get(i).getName());
11             }
12
13             public int getBatchSize() {
14
15                 return stockList.size();
16             }
17         });
18         int sumInsertedCount = 0;
19         for(int a: updatedCountArray)
20         {
21             sumInsertedCount+=a;
22         }
23         logger.info("batchInsert() end, stockList.size="+stockList.size()+",success inserted "+sumInsertedCount+" records");
24         return sumInsertedCount;
25     }

方法2:使用内置的SqlParamterSouce,从上面可以看出,代码还是写起来还是挺麻烦,赋值的时候很明显都是与Bean的属性名称有对应关系的,Spring因此提供了内置的方法来简化开发。因为需要足够的信息判断如何将对象的属性映射到sql中去,因此需要使用NamedJdbcTemplate。

 1     int batchDelete(final List<Stock> stockList)
 2     {
 3         logger.info("batchDelete() begin, codeList.size="+stockList.size());
 4         SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(stockList.toArray());
 5         int[] updatedCountArray = getNamedParameterJdbcTemplate().batchUpdate("delete from stock where code=:code", batch);
 6         int sumInsertedCount = 0;
 7         for(int a: updatedCountArray)
 8         {
 9             sumInsertedCount+=a;
10         }
11         logger.info("batchInsert() end, stockList.size="+stockList.size()+",success deleted "+sumInsertedCount+" records");
12         return sumInsertedCount;
13     }
时间: 2024-10-01 06:26:20

Spring JdbcTemplate批量操作数据库的相关文章

spring jdbctemplate操作数据库

  <!-- Spring jdbcTemplate -->     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"           lazy-init="false" autowire="default" >           <pro

使用Spring JdbcTemplate实现数据库操作

今天我来演示 关于JDBCTemplate实现对数据库的查询和添加 首先是添加 第一步大家都知道 创建一个实体类 然后写一个方法 把实体类当参数传进去 在实现这个接口 JdbcDaoSupport这个必须要引spring的一个jar包,自行体会 继承它才能与数据库交互 service层和dao大同小异 写一个和dao接口一样的接口 在实现类调用一下dao的方法就OK 然后实现什么方法就调用什么方法 然后进行配置 1.对dao的配置 1.2service配置(关联dao配置) 配置数据源 写一个p

使用Spring的JdbcTemplate访问数据库 转

使用Spring的JdbcTemplate访问数据库 JdbcTemplate 模板可以简化JDBC操作,但是创建一个JdbcTemplate需要一个DataSource接口,在Spring中,当然就是向 JdbcTemplate中注入一个DataSource,然后通过JdbcTemplate来获取一个连接(Connection). 假设SQL Server 2000数据库(新建的数据库名称为hibernate)中有一张person表,简单地记录了人员的详细信息. 使用Spring的IOC机制实

数据库操作之Spring JDBCTemplate(postgresql)

本文总结了两种使用JDBCTemplate进行数据库CRUD操作的例子,我用的是pg,废话不说,直接开始吧. 先贴一张目录结果图吧: 上图中最主要的是配置文件和所需的各种jar包. 一.通过属性文件的.properties的方式 这种方法很简单,也是最基本的,主要是从配置文件读取数据库连接信息,然后设置到数据源中,再将数据源设置到JdbcTemplate中,通过这个对象进行数据库的CRUD操作. 1.配置文件config.properties 用来配置数据库连接信息,我配置的都是一下基本信息 #

企业分布式微服务云SpringCloud SpringBoot mybatis (七)Spring Boot中使用JdbcTemplate访问数据库

本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdb

[原创]Spring JdbcTemplate 使用总结与经验分享

引言 近期开发的几个项目,均是基于Spring boot框架的web后端项目,使用JdbcTemplate执行数据库操作,实际开发过程中,掌握了一些有效的开发经验,踩过一些坑,在此做个记录及总结,与各位读者分享. 欢迎留言与我交流. 正确使用JdbcTemplate执行数据库操作 1.Bean声明 新增类型DatabaseConfiguration,添加注解@Configuration 该类型用于DataSource及JdbcTempate Bean的声明 基础代码如下 @Configurati

Spring JdbcTemplate 的使用与学习(转)

Spring JdbcTemplate 的使用与学习 JDBCTemplate 是SPRING 框架自带的一种对sql 语句查询的封装 ,封装非常完善,虽然与Hibernate比起来有一点麻烦,但是学号JDBCTemplate可以让我们用Spirngmvc框架去代替SSH,降低了 我们的学习成本.用起来也更加方便,测试代码如下,包括执行mysql 语句,分页,调用存储过程,返回对象数组,返回整数数组,返回单个对象等 package com.tz.jdbctemplate; import java

JdbcTemplate操作数据库

1.JdbcTemplate操作数据库 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中.同时,为了支持对properties文件的支持,spring提供了类似于EL表达式的方式,把dataSource.properties的文件参数引入到参数配置之中,<context:property-placeholder location="classpath:jdbc.properties"

Spring JdbcTemplate框架(1)——基本原理

JDBC已经能够满足大部分用户擦欧洲哦数据库的需求,但是在使用JDBC时,应用必须自己来管理数据库资源.spring对数据库操作需求提供了很好的支持,并在原始JDBC基础上,构建了一个抽象层,提供了许多使用JDBC的模板和驱动模块,为Spring应用操作关系数据库提供了更大的便利. Spring封装好的模板,封装了数据库存取的基本过程,方便用户. 一.模板方法 Spring JDBCTemplate从名字来说,这就是一个模板,的确是,它确实实现了涉及模式中的模板模式.如下: JDBCTempla