`
liuxi1024
  • 浏览: 390132 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring JdbcTemplate 批量插入

 
阅读更多

1、通过批量操作减少与数据库连接所消耗的资源。

 

2、JdbcTemplate的批量操作特性需要实现特定的接口BatchPreparedStatementSetter来进行的, 通过实现这个接口,并将其传入batchUpdate方法进行调用。 这个接口有两个方法需要实现。一个叫做getBatchSize来提供当前需要批量操作的数量。另外一个方法是setValues 允许你为prepared statement设置参数。这个方法将在整个过程中被调用的次数,则取决于你在getBatchSize中所指定的大小。

 

3、例子代码如下:

 

public void storeSalesOrder(List<Report> list) {
		System.out.format("执行保存数据 %s ...%n", ip);
		final List<Report> reportList = list;
		String sql = "insert into sell_order(traceNo, purchaseBatch, terminalNo, sellDate, "
				+ "category, weight, price, amount, createDate, status) values(?,?,?,?,?,?,?,?,?,?)";
		template.batchUpdate(sql, new BatchPreparedStatementSetter() {
			public void setValues(PreparedStatement ps, int i)throws SQLException {
				String[] text1 = StringUtils.stringToArrayCustom(reportList.get(i).text1,"##");
				Calendar cal = Calendar.getInstance(); 
				cal.set(reportList.get(i).year, reportList.get(i).month - 1, reportList.get(i).day,
						reportList.get(i).hour, reportList.get(i).minute,reportList.get(i).second);
				String text4 = reportList.get(i).text4.replace("#", "");
				
				String traceNo = reportList.get(i).text2;
				String purchaseBatch = (text1 != null && text1.length != 0)?text1[0].trim():"";
				String terminalNo = (text1 != null && text1.length != 0)?text1[1].trim():"";
				Date sellDate = cal.getTime();
				String category = text4;
				double weight = 0d;
				double price = 0d;
				if(kgFlag){
					weight = reportList.get(i).count.doubleValue();
					price = reportList.get(i).unitPrice.doubleValue();
				}else{
					weight = reportList.get(i).count.doubleValue()/2;
					price = reportList.get(i).unitPrice.doubleValue()*2;
				}
				double amount = reportList.get(i).price.doubleValue();
				
				ps.setString(1, traceNo);
				ps.setString(2, purchaseBatch);
				ps.setString(3, terminalNo);
				ps.setTimestamp(4, new Timestamp(sellDate.getTime()));
				ps.setString(5, category);
				ps.setDouble(6, weight);
				ps.setDouble(7, price);
				ps.setDouble(8, amount);
				ps.setTimestamp(9, new Timestamp(new Date().getTime()));
				ps.setInt(10, 0);
			}

			public int getBatchSize() {
				return reportList.size();
			}
		});

	}

 

 

分享到:
评论

相关推荐

    SpringJdbcTemplate封装工具类

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

    Spring JdbcDaoSupport 批量插入数据

    总结起来,`Spring JdbcDaoSupport`是简化数据库操作的有效工具,特别适合批量插入数据。通过`JdbcTemplate`的`batchUpdate`方法和`BatchPreparedStatementSetter`,我们可以高效地处理大量数据,同时保持代码的整洁...

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

    JdbcTemplate还支持批量操作,比如批量插入: ```java public void batchInsert(List&lt;User&gt; users) { List[]&gt; batchArgs = new ArrayList(); for (User user : users) { batchArgs.add(new Object[]{user....

    Spring JdbcTemplate.batchUpdate 例子

    总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...

    Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站.htm

    Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站

    SpringBoot JdbcTemplate批量操作的示例代码

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

    spring jdbc Templatetest 访问mysql数据库,批量插入数据

    本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...

    spring jdbctemplate实例

    此外,JdbcTemplate还提供了其他高级功能,如批量操作、分页查询、存储过程调用等。同时,它也支持PreparedStatement,可以防止SQL注入攻击。对于性能要求较高的互联网应用,JdbcTemplate的这些特性使其成为理想的...

    JdbcTemplate的批量方法使用

    在这个场景中,我们将详细探讨如何使用`JdbcTemplate`进行批量插入和删除操作。 批量插入操作在数据库处理大量数据时非常常见,它可以显著提高性能,因为数据库通常会优化批量处理,而不是单独处理每一项。在提供的...

    spring框架 jdbcTemplate

    Spring框架的JdbcTemplate是Spring为Java开发者提供的一种方便、安全地与数据库进行交互的工具。它简化了数据库访问,提供了对SQL操作的抽象,避免了直接编写大量的JDBC代码,从而减少了错误并提高了代码的可读性...

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

    首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的字符串数组,然后依次执行这些语句。例如,删除角色关联菜单的记录,接着插入新的关联...

    Spring框架中jdbcTemplate 的使用.doc

    如果需要批量执行SQL语句,JdbcTemplate还提供了`batchUpdate()`方法,可以一次执行多个更新操作。 9. **性能优化**: JdbcTemplate通过缓存预编译的SQL语句(PreparedStatement),提高了性能,并且可以避免多次...

    jdbctemplatedemo.zip

    对于数据导入,项目可能会包含读取文件(例如CSV或XML)中的数据,然后使用JdbcTemplate批量插入到MySQL数据库。这通常涉及解析文件,创建数据行的列表,然后使用`batchUpdate`方法将这些行作为批处理语句执行。...

    SpringJDBC批量处理数据代码示例

    参数: List&lt;Map&gt; paramMaps = new ArrayList(); for(int i = 0; i &lt; 100; i++ ){ Map paramMap = new HashMap(); paramMap.put(param1, param1);... paramMap.put(param2, param2);... paramMap.put(param5, param5

    _Spring_使用 JdbcTemplate和JdbcDaoSupport.rar

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

    JavaEE JdbcTemplate的简单示例

    JavaEE是企业级应用开发的重要框架,而Spring框架作为JavaEE的核心部分,提供了一系列的强大功能,其中...在实际项目中,根据需求选择合适的方法,如批量操作、事务控制等,JdbcTemplate都能提供有力的支持。

    JdbcTemplate的事务控制.docx

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

    JdbcTemplate.jar

    《Spring JDBC:深入理解JdbcTemplate》 在Java的Web开发中,Spring框架以其强大的功能和易用性赢得了广泛的认可。其中,Spring JDBC模块是Spring框架的重要组成部分,它为数据库操作提供了一种简单而有效的抽象,...

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

    Spring框架提供了JdbcTemplate或MyBatis等工具,可以方便地与数据库进行交互。将验证过的数据以批量的方式插入到数据库中,可以显著提高性能。在Spring Boot项目中,可以使用@Transactional注解确保数据的原子性和...

    jdbcTemplate集锦很好的推荐

    - **批量操作**:支持批量插入、更新或删除数据。 - **复杂查询**:对于复杂的查询需求,`jdbcTemplate`提供了灵活的方法来处理。 - **事务管理**:配合Spring的事务管理功能,可以方便地实现数据库操作的原子性。 ...

Global site tag (gtag.js) - Google Analytics