`

Spring jdbcTemplate批量插入

阅读更多

项目中遇到批量导入的功能,需要用批量添加。项目使用 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 批量操作

分享到:
评论

相关推荐

    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....

    SpringBoot JdbcTemplate批量操作的示例代码

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

    Spring JdbcTemplate.batchUpdate 例子

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

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

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

    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