jdbcTemplate批量插入数据
public void buyTool(List<UserToolNew> userToolList) throws Exception {
final List<UserToolNew> intsertlist=new ArrayList<UserToolNew>();
if(!CollectionUtils.isEmpty(userToolList)){
intsertlist.addAll(userToolList);
}
final Calendar invalidateTimeCalendar = Calendar.getInstance();
invalidateTimeCalendar.add(Calendar.DAY_OF_MONTH, 30);
invalidateTimeCalendar.set(Calendar.HOUR_OF_DAY, 23);
invalidateTimeCalendar.set(Calendar.MINUTE, 59);
invalidateTimeCalendar.set(Calendar.SECOND, 59);
final Timestamp createTime = Timestamp.valueOf(
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
final Timestamp invalidateTime = Timestamp.valueOf(
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").
format(invalidateTimeCalendar.getTime()));
if(!CollectionUtils.isEmpty(intsertlist)){
String insertSql="insert into yyff_user_tool("
+"user_id,tool_id,tool_pool_id,use_flag,own_type,fee,create_time,invalidate_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
jdbcTemplate.batchUpdate(insertSql, new BatchPreparedStatementSetter() {
public int getBatchSize() {
return intsertlist.size();
}
public void setValues(PreparedStatement ps, int i)
throws SQLException {
UserToolNew userTool=(UserToolNew)intsertlist.get(i);
ps.setLong(1,userTool.getUserId());
ps.setInt(2, userTool.getToolId());
ps.setInt(3, userTool.getToolPoolId());
ps.setString(4, "1");
ps.setString(5, "1");
ps.setInt(6, userTool.getFee());
ps.setTimestamp(7, createTime);
ps.setTimestamp(8, invalidateTime);
}
});
}
}
分享到:
相关推荐
本文将深入探讨如何利用`JdbcDaoSupport`进行批量插入数据的操作,以及其背后的原理和源码分析。 首先,`JdbcDaoSupport`是`AbstractJdbcDaoSupport`的子类,它提供了对JDBC访问的便捷封装,允许开发者无需直接管理...
SpringBoot JdbcTemplate批量操作是提高数据处理效率的重要手段,尤其在处理大量数据插入或更新时。JdbcTemplate作为Spring框架的一部分,提供了便捷且安全的数据库访问方式,它简化了JDBC的使用,避免了手动管理...
在Java的数据库编程中,JDBC(Java Database Connectivity)提供了多种方法来实现数据的批量插入,从而提高数据库操作的效率。本篇文章将深入探讨三种不同的JDBC批量插入编程方法,并进行对比分析,以帮助开发者更好...
本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...
5. **批量插入数据到数据库** 在数据处理过程中,往往还需要将数据批量插入到数据库。EasyExcel提供了一个`executeBatchInsert`方法,可以配合JDBC或其他ORM框架如MyBatis,将数据批量插入到数据库。首先,我们需要...
在提供的代码段中,`batchInsertIndicesData`方法展示了如何使用`JdbcTemplate`来批量插入数据。 1. 首先,创建了一个SQL插入语句(`getInsertSql().toString()`)。 2. 接着,创建了一个`...
批量插入数据是一种常见的优化手段,能够显著提升数据插入的效率。本文主要探讨了在MySQL中如何通过批量插入优化性能,对比了几种不同的批量插入方法,并进行了实验验证。 首先,传统的单条插入方式在面对大量数据...
Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站
在PostgreSQL中,批量插入、更新和合并操作是数据库管理中常见的需求,尤其是在处理大量数据时。PostgreSQL提供了多种方法来实现这些操作,包括使用`INSERT ON CONFLICT`(也称为`UPSERT`)和`UNNEST`函数。 首先,...
对于数据导入,项目可能会包含读取文件(例如CSV或XML)中的数据,然后使用JdbcTemplate批量插入到MySQL数据库。这通常涉及解析文件,创建数据行的列表,然后使用`batchUpdate`方法将这些行作为批处理语句执行。...
例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...
在这个例子中,我们使用了`JdbcTemplate`的`batchUpdate`方法来进行批量更新操作,并且在调用该方法之前关闭了`Connection`对象的自动提交功能。如果在执行过程中发生了异常,比如主键冲突导致的插入失败,那么所有...
参数: 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查询数据。以下是一个查询示例: ```java public List<User> getUsers() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, new UserRowMapper()); } ...
JdbcTemplate会处理事务,确保数据完整地插入到数据库中。 7. **事务管理**: JdbcTemplate自动处理了数据库事务。如果在一组操作中发生异常,它会回滚事务,保护数据的完整性。我们可以通过编程式或者声明式的...
JdbcTemplate还支持批量操作,比如批量插入: ```java public void batchInsert(List<User> users) { List[]> batchArgs = new ArrayList(); for (User user : users) { batchArgs.add(new Object[]{user....
- **批量操作**:支持批量插入、更新或删除数据。 - **复杂查询**:对于复杂的查询需求,`jdbcTemplate`提供了灵活的方法来处理。 - **事务管理**:配合Spring的事务管理功能,可以方便地实现数据库操作的原子性。 ...
将验证过的数据以批量的方式插入到数据库中,可以显著提高性能。在Spring Boot项目中,可以使用@Transactional注解确保数据的原子性和一致性。 6. **异常处理和反馈**: 为了提供良好的用户体验,需要捕获并处理...
此外,JdbcTemplate还提供了其他高级功能,如批量操作、分页查询、存储过程调用等。同时,它也支持PreparedStatement,可以防止SQL注入攻击。对于性能要求较高的互联网应用,JdbcTemplate的这些特性使其成为理想的...
在成功连接后,你可以使用`Statement`对象执行HQL(Hive Query Language)命令,例如创建表、插入数据、查询等。例如: ```java // 插入数据 String insertQuery = "INSERT INTO test_table VALUES (1, 'John'), (2...