spring jdbcTemplate批量更新数据

方法:先实现BatchPreparedStatementSetter接口,然后再调用JdbcTemplate的batchUpdate(sql,setter)操作,参数sql是预编译语句
,setter是BatchPreparedStatementSetter的一个实例。或者使用内部匿名类方式。

BatchPreparedStatementSetter接口

 public interface BatchPreparedStatementSetter{
  public int getBatchSize();//返回批次的大小
public void setValues(PreparedStatement ps,int i);
// ps:我们将要设值的PreparedStatement
// i:在这个批次汇总,正在执行操作的索引,从0算起
}

实现(内部匿名类):


jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){

public int getBatchSize() {
// TODO Auto-generated method stub
return resourceList.size(); //读取数据源列表的大小
}
public void setValues(PreparedStatement ps, int i) throws SQLException {
// TODO Auto-generated method stub
ResourceBean resourceBean =(ResourceBean)resourceList.get(i); //读取要插入的源数据列表
pstmt.setString(1,resourceBean.getId());
pstmt.setString(2,resourceBean.getName());
pstmt.setString(3,resourceBean.getAuthor());
... ...
}

});

spring jdbcTemplate批量更新数据,布布扣,bubuko.com

时间: 2024-08-05 19:19:12

spring jdbcTemplate批量更新数据的相关文章

Sql语句批量更新数据(多表关联)

最近在项目中遇到一个问题,原来设计的功能是不需要一个特定的字段值depid的,但是新的功能需要根据depid来展现,于是出现了这样一个问题,新增加的数据都有正确的depid,而原来的大量的数据就没有depid或者说depid不是想要的,面临要批量更新原来数据depid的问题. 更新涉及到三个表base_cooperativeGroup,base_groupuser,base_user. 列出表结构: 1.base_cooperativeGroup 2.base_groupuser 3.base_

Mybatis批量更新数据

Mybatis批量更新数据 第一种方式 [html] view plain copy print? <update id="updateBatch" parameterType="Map"> update aa   set a=#{fptm}, b=#{csoftrain} where c in <foreach collection="cs" index="index" item="item&qu

度量快速开发平台:网格部件批量更新数据

在快速开发平台中,如何批量更新网格部件数据?今天给大家介绍平台下的2种方法: 方法一: 利用快速开发平台自身的智能向导,快速构建数据的批量更新功能. 批量更新数据函数:SetColumnValue(stringfiledName,objectvalue,intscope) 作用 获取焦点行的字段的值. 参数 参数一:fieldName      string类型,字段名称. 参数二:value     object类型,更新的值. 参数三:scope     int类型,更新的范围.     更

采用存储过程的方式批量更新数据

采用存储过程的方式批量更新数据,Oracle中也可采用merge-update的方式更新,不过采用如下存储过程的方式会更快些 DECLARE   MAX_ROWS            NUMBER DEFAULT 5000;   ROW_ID_TABLE        DBMS_SQL.UROWID_TABLE;   DATE_TIME_TABLE      DBMS_SQL.DATE_TABLE;   CURSOR C1 IS     SELECT /*+ use_hash(t1,t2) p

Neo4j 第五篇:批量更新数据

相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时,大多数时间耗费在连接数据库和打开事务上,高效的做法是利用Neo4j提供的参数(Parameter)机制和UNWIND子句:在一次数据更新中,进行一次连接,打开一次事务,批量更新数据:参数用于提供列表格式的数据,UNWIND子句是把列表数据展开成一行一行的数据,每行数据都会执行结构相同的Cypher

使用PHP生成器批量更新数据

使用PDO操作数据 生成器使用 随机暂停缓解数据库压力 批量更新数据 <?php header('Content-Type: text/html; charset=utf-8'); // 定义数据配置信息 $host = ''; $dbname = ''; $user = ''; $pass = ''; $prefix = ''; try { // 是否开启更新执行 define('DEBUG',true); // true 执行修改SQL false 反之, $testFor = 0; $te

批量更新数据不同状态时 ,1.在更新前检测 2.更新后执行自己的逻辑

今天在项目中做盘点管理,盘点单据有 编辑->提交->审批->撤销->退回->开盘->盘毕等状态.根据操作对盘点单据会不停的更新其状态.一般做法是根据这5.6种状态,编写5,6中ServiceImpl方法 分别去Update.若要是批量操作则会加上for循环,代码块冗余过多.自己便将Update抽离出来.抽离出来后,面临这一些问题.就是在有些状态更新操作时,需要做验证(如:退回只能操作审批状态.开盘只能操作审批状态).这个时候就需要在update之前需要判断,看其当前状态

mybatis学习之路----批量更新数据两种方法效率对比

原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方式有两种, 一种用for循环通过循环传过来的参数集合,循环出N条sql, 另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现. 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql:

winform批量更新数据_长时间的执行会导致界面卡死

原文:winform批量更新数据_长时间的执行会导致界面卡死 前言:使用winform触发一个事件后执行的代码,如果耗时非常长,则会导致窗口界面假死!  本人最近通过winform窗体执行一项:需要批量更新一批数据库的数据的操作的任务时,由于数据量达到百万级别,非常耗时,只能慢慢更新,慢慢执行. 但是,在执行的过程遇到了一个奇葩的问题:窗体在调试状态下,代码可以慢慢循环执行,没出现异常.  但是我单独运行EXE程序时,就必现:程序假死,未响应状态. 后台百度虽然没有找到直接的答案,但是也发现了原