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

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

解决什么问题

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

怎么做

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

     int batchInsert(final List<Stock> stockList)
{
logger.info("batchInsert() begin, stockList.size="+stockList.size());
int[] updatedCountArray = getJdbcTemplate().batchUpdate("insert into stock(id,code,name) value(?,?,?)", new BatchPreparedStatementSetter() { public void setValues(PreparedStatement ps, int i) throws SQLException {
// TODO Auto-generated method stub
ps.setLong(1, stockList.get(i).getId());//要注意,下标从1开始
ps.setString(2, stockList.get(i).getCode());
ps.setString(3, stockList.get(i).getName());
} public int getBatchSize() { return stockList.size();
}
});
int sumInsertedCount = 0;
for(int a: updatedCountArray)
{
sumInsertedCount+=a;
}
logger.info("batchInsert() end, stockList.size="+stockList.size()+",success inserted "+sumInsertedCount+" records");
return sumInsertedCount;
}

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

     int batchDelete(final List<Stock> stockList)
{
logger.info("batchDelete() begin, codeList.size="+stockList.size());
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(stockList.toArray());
int[] updatedCountArray = getNamedParameterJdbcTemplate().batchUpdate("delete from stock where code=:code", batch);
int sumInsertedCount = 0;
for(int a: updatedCountArray)
{
sumInsertedCount+=a;
}
logger.info("batchInsert() end, stockList.size="+stockList.size()+",success deleted "+sumInsertedCount+" records");
return sumInsertedCount;
}

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

  1. 使用Spring JdbcTemplate实现数据库操作

    今天我来演示 关于JDBCTemplate实现对数据库的查询和添加 首先是添加 第一步大家都知道 创建一个实体类 然后写一个方法 把实体类当参数传进去 在实现这个接口 JdbcDaoSupport这个 ...

  2. Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  3. Spring Boot (7) JdbcTemplate访问数据库

    使用jdbcTemplate操作数据库 spring framework对数据库的操作在jdbc上面做了深层次的封装,通过依赖注入功能,可以将datasource注册到jdbcTemplate中,学习 ...

  4. Spring Boot教程(二十九)使用JdbcTemplate操作数据库

    使用JdbcTemplate操作数据库 Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用. 举例:我们在创建User表,包含属性n ...

  5. 数据库操作之Spring JDBCTemplate(postgresql)

    本文总结了两种使用JDBCTemplate进行数据库CRUD操作的例子,我用的是pg,废话不说,直接开始吧. 先贴一张目录结果图吧: 上图中最主要的是配置文件和所需的各种jar包. 一.通过属性文件的 ...

  6. Spring Boot入门系列(十四)使用JdbcTemplate操作数据库,配置多数据源!

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.如何实现事物控制.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/c ...

  7. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

  8. 【Spring】Spring的数据库开发 - 1、Spring JDBC的配置和Spring JdbcTemplate的解析

    Spring JDBC 文章目录 Spring JDBC Spring JdbcTemplate的解析 Spring JDBC的配置 简单记录-Java EE企业级应用开发教程(Spring+Spri ...

  9. Spring4.3.1 JDBCTemplate操作数据库

    个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5679354.html 基于Spring4.3.1官方文档总结,官方文档链接http://docs.spr ...

随机推荐

  1. 《大数据Spark企业级实战 》

    基本信息 作者: Spark亚太研究院   王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...

  2. .net 与 javascript脚本的几种交互方法

    1.asp.net呼叫js Response.Write("<script language=javascript>"); Response.Write("a ...

  3. BZOJ_3670_[NOI2014]_动物园_(kmp)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3670 对于一个字符串,求出num数组,其中num[i]表示前i个字符构成的字串中不相重合的相同 ...

  4. BZOJ2295: 【POJ Challenge】我爱你啊

    2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 126  Solved: 90[Submit][Sta ...

  5. 【转】LINUX系统I/O复用技术之二:poll() -- 不错

    原文网址:http://www.cnblogs.com/alyssaCui/archive/2013/04/01/2993886.html poll poll或select为大部分Unix/Linux ...

  6. C#设计模式(23种设计模式)

    转自:http://www.cnblogs.com/abcdwxc/archive/2007/10/30/942834.html 创建型:        1. 单件模式(Singleton Patte ...

  7. c#自动更新+安装程序的制作

    一.自动更新的实现 让客户端实现自动更新,通常做法是在客户端部署一个单独的自动更新程序.主程序启动后,访问服务端,检查配置文件是否有更新版本,有更新版本就启动更新程序,由更新负责下载更新版本,并更新客 ...

  8. poj 1696 Space Ant(模拟+叉积)

    Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3840   Accepted: 2397 Descrip ...

  9. 白帽子讲Web安全1.pdf

    第一章 我的安全世界观 安全是一个持续过程 6种威胁:Spoofing(伪装).Tampering(篡改).Repudiation(抵赖).InformationDisclosure(信息泄漏).De ...

  10. Tornado源码探寻(请求到来)

    上一篇中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未执行 socket的accept方法,也就是未获取 ...