`
飞天小女警
  • 浏览: 107143 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

Spring利用JDBCTemplate批量更新数据

    博客分类:
  • SSH
阅读更多
public void addBatchScyh(List<User> userList) throws Exception {
		final List<User> yhList = userList;
		final Long drsj = CalendarUtil.getLongDateTime();
		if(yhList != null && yhList.size() > 0){
			this.getJdbcTemplate().batchUpdate("insert into user (id,yhbh,yhxm,lxfs,bbtnz,xtxjd,drsj,drpc,yhbz) VALUES (SEQ_USER_ID.nextval,?, ?, ?, ?, ? ,? ,? ,?)", new BatchPreparedStatementSetter() {
				
				@Override
				public void setValues(PreparedStatement ps, int i) throws SQLException {
					User user = yhList.get(i);
					ps.setBigDecimal(1, BigDecimal.valueOf(Long.decode(user.getYhbh())));
					ps.setString(2, user.getYhxm());
					ps.setLong(3, Long.decode(user.getLxfs()));
					ps.setString(4, user.getBbtnz());
					ps.setString(5, user.getXtxjd());
					ps.setLong(6, drsj);
					ps.setBigDecimal(7, BigDecimal.valueOf(Long.decode(user.getDrpc())));
					ps.setString(8, "1");
					
					//每2000条进行事物提交
			        if (i%2000 == 0) {
			        	ps.executeBatch(); //执行prepareStatement对象中所有的sql语句
			            getSession().flush();//数据库与缓存同步
			            getSession().clear();//清空缓存
			        }
				}
				
				@Override
				public int getBatchSize() {
					return yhList.size();
				}
			});
		}
	}

   

   工作的过程中遇到了一个要海量插入数据的问题,在网上查了很多资料,归纳起来,最快,效率最高的方法当然是采用,JDBC了,但是系统采用的是SSH的架构,退而求其次选择Spring中的JDBCTemplate批量插入操作,其中,每2000条数据提交一次并使session与缓存同步,这样的操作,我也是“小马过河”试一试,但实际的运行结果,表明,确实提高了效率,5万条数据的导入时间大概为40s左右,还行吧,反正是满足领导的要求了,嘿嘿~~

分享到:
评论
3 楼 一碗三餐 2012-06-20  
哦,不好意思看懂了
2 楼 一碗三餐 2012-06-20  
请教点问题 如何控制每2000条数据提交一次谢谢
1 楼 jy2382726 2011-08-14  
学习咯   

相关推荐

    SpringJdbcTemplate封装工具类

    例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...

    Spring JdbcDaoSupport 批量插入数据

    本文将深入探讨如何利用`JdbcDaoSupport`进行批量插入数据的操作,以及其背后的原理和源码分析。 首先,`JdbcDaoSupport`是`AbstractJdbcDaoSupport`的子类,它提供了对JDBC访问的便捷封装,允许开发者无需直接管理...

    一个简单的spring-jdbctemplate扩展

    使用JdbcTemplate扩展,开发者可以创建自定义的DAO接口,这些接口定义了特定的数据库操作,然后在实现类中利用JdbcTemplate提供的模板方法来完成这些操作。例如,可能会有一个`UserDao`接口,其中包含`getUserById`...

    SpringBoot JdbcTemplate批量操作的示例代码

    SpringBoot JdbcTemplate批量操作是提高数据处理效率的重要手段,尤其在处理大量数据插入或更新时。JdbcTemplate作为Spring框架的一部分,提供了便捷且安全的数据库访问方式,它简化了JDBC的使用,避免了手动管理...

    springBoot+springBatch批量处理数据demo

    SpringBoot和SpringBatch是两个非常重要的Java开发框架,它们在企业级应用开发中扮演着重要角色。...通过深入理解这些概念和实践,开发者能够更好地利用SpringBoot和SpringBatch进行大数据处理任务。

    SSH笔记-Spring JdbcTemplate

    SSH笔记-Spring JdbcTemplate是关于如何在Spring框架中利用JdbcTemplate进行数据库操作的教程。Spring是一个广泛应用的Java企业级应用框架,它提供了多种数据访问工具,而JdbcTemplate就是其中之一,用于简化JDBC...

    使用Spring JDBCTemplate进行增删改查curd操作

    本文将深入探讨如何利用Spring JdbcTemplate进行CURD(Create、Read、Update、Delete)操作。 1. 创建(Create) 创建数据通常涉及插入新的记录到数据库表中。JdbcTemplate提供了`update()`方法来执行SQL的INSERT...

    Spring框架实现Excel批量导入数据

    本教程将详细讲解如何利用Spring框架实现Excel数据的批量导入,以提高数据录入效率。 首先,我们需要了解Excel文件的结构。Excel是一种常用的电子表格软件,它的数据通常存储在工作簿(Workbook)中,每个工作簿...

    Spring JdbcTemplate.batchUpdate 例子

    `JdbcTemplate`的`batchUpdate`方法就是用来实现这样的功能,它可以批量执行更新语句,如INSERT、UPDATE或DELETE。 `batchUpdate`方法的基本使用如下: ```java int[] result = jdbcTemplate.batchUpdate( ...

    jdbcTemplate分页彻底解决,使用游标滚动

    本篇文章将深入探讨如何利用JdbcTemplate结合游标滚动来解决分页问题。 首先,我们要理解什么是游标滚动。在数据库中,游标允许我们从结果集中顺序地读取一行数据,也可以向前或向后移动,甚至可以在当前行上进行...

    JdbcTemplate的批量方法使用

    在Java的JDBC编程中,`JdbcTemplate`是Spring框架提供的一个强大且便捷的工具,用于简化数据库操作。它提供了一系列方法,包括批量处理SQL语句,极大地提高了开发效率并减少了错误的可能性。在这个场景中,我们将...

    Spring 中jdbcTemplate 实现执行多条sql语句示例

    总结来说,Spring的JdbcTemplate提供了一种方便、安全的方式来执行多条SQL语句,尤其是在需要确保数据一致性的情况下。通过批处理和事务管理,我们可以有效地处理复杂的数据库操作,避免因单个操作失败而导致的数据...

    _Spring_使用 JdbcTemplate和JdbcDaoSupport.rar

    `JdbcTemplate`是Spring对JDBC API的一个轻量级包装,它通过提供一系列模板方法来处理常见的JDBC操作,如查询、更新、插入和删除数据。这样可以避免手动处理连接、事务和异常,降低了代码的复杂性。`JdbcTemplate`...

    JdbcTemplate的事务控制.docx

    在这个例子中,我们使用了`JdbcTemplate`的`batchUpdate`方法来进行批量更新操作,并且在调用该方法之前关闭了`Connection`对象的自动提交功能。如果在执行过程中发生了异常,比如主键冲突导致的插入失败,那么所有...

    JdbcTemplate,自己封装的jdbc小框架

    为了解决这个问题,开发者常常会使用一些框架来简化这些操作,比如Spring的JdbcTemplate。本项目则基于这一思想,创建了一个自定义的JdbcTemplate小框架,旨在提供更简洁、高效的数据库操作方式。 自封装的...

    springmvc+mysql增删改查批量删除异步请求全选反选

    当用户触发异步请求时,比如点击“删除”按钮,前端发送一个JSON或XML格式的请求到服务器,服务器处理请求并返回结果,前端再根据返回的数据更新DOM,实现无刷新页面更新。 此外,为了确保数据安全,开发者可能还...

    SpringJDBC批量处理数据代码示例

    在Java开发中,Spring JDBC是Spring...总的来说,Spring JDBC提供了强大的批量处理能力,通过`NamedParameterJdbcTemplate`的`batchUpdate`方法,我们可以轻松地实现数据的批量插入和更新,有效提升数据库操作的效率。

    spring 3.2.4官网jar包

    10. **Spring Batch**:Spring Batch 是用于处理批量数据的模块,支持复杂的批处理任务,包括错误处理、事务管理以及监控。 11. **Spring Boot**:虽然Spring 3.2.4.RELEASE 不包含Spring Boot,但值得一提的是,...

    Spring中文帮助文档

    11.4.1. 使用JdbcTemplate进行批量操作 11.4.2. 使用SimpleJdbcTemplate进行批量操作 11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动...

Global site tag (gtag.js) - Google Analytics