项目中遇到批量导入的功能,需要用批量添加。项目使用 spring + Hibernate+Spingmvc+jdbcTemplate框架。
由于使用Hibernate批量导入费时,故采用jdbcTemplate导入。用这个导入的思路有2个,一个是使用原生sql,写插入语句,循环Values里的值。一个是用jdbcTemplate.batchUpdate(sql,BatchPreparedStatementSetter);方法。
这里只写一下第二个方法的代码:
BaseDao
/**
* 批量添加
* @param sql
*/
public abstract Long insertToBatch(String sql,BatchPreparedStatementSetter pss);
BaseDaoImpl
@Override
public Long insertToBatch(String sql, BatchPreparedStatementSetter pss) {
Long l = 0L;
logger.info("insertToBatch start");
logger.info("insertToBatch sql="+sql+"---pass="+pss);
// BatchPreparedStatementSetter pss = null;
int[] count = jdbcTemplate.batchUpdate(sql, pss);
if(count!=null){
l = Long.parseLong(String.valueOf(count.length));
}
return l;
}
serviceImpl
@Override
public Long insertBatch222(List<TContractKeeptype> list) {
final List<TContractKeeptype> temList = list;
logger.info("insertBatch 批量插入 start");
Long l1 = System.currentTimeMillis();
StringBuffer sql = new StringBuffer("INSERT INTO t_contract_keeptype (name,flag,createUserId) VALUES (?,?,?) ");
BatchPreparedStatementSetter pss = new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
TContractKeeptype ck = temList.get(i);
ps.setString(1, ck.getName());
ps.setLong(2, ck.getFlag()); (拼装数据)
ps.setLong(3, ck.getCreateUserId());
}
@Override
public int getBatchSize() {
return temList.size();
}
};
long l= tContractKeeptypeDao.insertToBatch(sql.toString(), pss);
logger.info("insertBatch 批量插入 "+sql.toString());
Long l2 = System.currentTimeMillis();
logger.info("公用时间:"+(l2-l1)/1000);
return l;
}
OK。
最后,使用Mysql数据库的,在链接数据库的时候加上这个参数 rewriteBatchedStatements=true 批量操作
相关推荐
例如,大量数据的批量插入可能更适合使用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....
SpringBoot JdbcTemplate批量操作是提高数据处理效率的重要手段,尤其在处理大量数据插入或更新时。JdbcTemplate作为Spring框架的一部分,提供了便捷且安全的数据库访问方式,它简化了JDBC的使用,避免了手动管理...
总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...
Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站
本主题将详细讲解如何使用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的事务管理功能,可以方便地实现数据库操作的原子性。 ...