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();
}
});
}
分享到:
相关推荐
例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...
总结起来,`Spring JdbcDaoSupport`是简化数据库操作的有效工具,特别适合批量插入数据。通过`JdbcTemplate`的`batchUpdate`方法和`BatchPreparedStatementSetter`,我们可以高效地处理大量数据,同时保持代码的整洁...
JdbcTemplate还支持批量操作,比如批量插入: ```java public void batchInsert(List<User> users) { List[]> batchArgs = new ArrayList(); for (User user : users) { batchArgs.add(new Object[]{user....
总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...
Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站
SpringBoot JdbcTemplate批量操作是提高数据处理效率的重要手段,尤其在处理大量数据插入或更新时。JdbcTemplate作为Spring框架的一部分,提供了便捷且安全的数据库访问方式,它简化了JDBC的使用,避免了手动管理...
本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...
此外,JdbcTemplate还提供了其他高级功能,如批量操作、分页查询、存储过程调用等。同时,它也支持PreparedStatement,可以防止SQL注入攻击。对于性能要求较高的互联网应用,JdbcTemplate的这些特性使其成为理想的...
在这个场景中,我们将详细探讨如何使用`JdbcTemplate`进行批量插入和删除操作。 批量插入操作在数据库处理大量数据时非常常见,它可以显著提高性能,因为数据库通常会优化批量处理,而不是单独处理每一项。在提供的...
Spring框架的JdbcTemplate是Spring为Java开发者提供的一种方便、安全地与数据库进行交互的工具。它简化了数据库访问,提供了对SQL操作的抽象,避免了直接编写大量的JDBC代码,从而减少了错误并提高了代码的可读性...
首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的字符串数组,然后依次执行这些语句。例如,删除角色关联菜单的记录,接着插入新的关联...
如果需要批量执行SQL语句,JdbcTemplate还提供了`batchUpdate()`方法,可以一次执行多个更新操作。 9. **性能优化**: JdbcTemplate通过缓存预编译的SQL语句(PreparedStatement),提高了性能,并且可以避免多次...
对于数据导入,项目可能会包含读取文件(例如CSV或XML)中的数据,然后使用JdbcTemplate批量插入到MySQL数据库。这通常涉及解析文件,创建数据行的列表,然后使用`batchUpdate`方法将这些行作为批处理语句执行。...
参数: List<Map> paramMaps = new ArrayList(); for(int i = 0; i < 100; i++ ){ Map paramMap = new HashMap(); paramMap.put(param1, param1);... paramMap.put(param2, param2);... paramMap.put(param5, param5
`JdbcTemplate`是Spring对JDBC API的一个轻量级包装,它通过提供一系列模板方法来处理常见的JDBC操作,如查询、更新、插入和删除数据。这样可以避免手动处理连接、事务和异常,降低了代码的复杂性。`JdbcTemplate`...
JavaEE是企业级应用开发的重要框架,而Spring框架作为JavaEE的核心部分,提供了一系列的强大功能,其中...在实际项目中,根据需求选择合适的方法,如批量操作、事务控制等,JdbcTemplate都能提供有力的支持。
在这个例子中,我们使用了`JdbcTemplate`的`batchUpdate`方法来进行批量更新操作,并且在调用该方法之前关闭了`Connection`对象的自动提交功能。如果在执行过程中发生了异常,比如主键冲突导致的插入失败,那么所有...
《Spring JDBC:深入理解JdbcTemplate》 在Java的Web开发中,Spring框架以其强大的功能和易用性赢得了广泛的认可。其中,Spring JDBC模块是Spring框架的重要组成部分,它为数据库操作提供了一种简单而有效的抽象,...
Spring框架提供了JdbcTemplate或MyBatis等工具,可以方便地与数据库进行交互。将验证过的数据以批量的方式插入到数据库中,可以显著提高性能。在Spring Boot项目中,可以使用@Transactional注解确保数据的原子性和...
- **批量操作**:支持批量插入、更新或删除数据。 - **复杂查询**:对于复杂的查询需求,`jdbcTemplate`提供了灵活的方法来处理。 - **事务管理**:配合Spring的事务管理功能,可以方便地实现数据库操作的原子性。 ...