最近开发中使用了spring的NamedParameterJdbcTemplate的批量更行操作
方法如下
public void insert(Collection<Person> entities) { SqlParameterSource[] params = SqlParameterSourceUtils.createBatch(entities.toArray()); namedJdbcTemplate.batchUpdate(insertSql, params); }
我们业务的实际需要使用的是
public int batchUpdateBeans(String insertSql, List<? extends Object> beans) { int[] results = null; try { SqlParameterSource[] params = SqlParameterSourceUtils .createBatch(beans.toArray()); results = this.namedParameterJdbcTemplate.batchUpdate(insertSql, params); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); } return results.length; }
我们只需要传对应的sql 和封装的集合对象就可以实现批量更新了
如:
public int batchAddSupplyInfo(DUserInfo userInfo, List<DSupplyInfo> supplyList) { logger.info(System.currentTimeMillis() + "@" + userInfo.getAccount() + "#SupplyInfo.batchAddSupplyInfo"); StringBuffer sqlKey = new StringBuffer(); StringBuffer sqlValue = new StringBuffer(); sqlKey.append("insert into supply_info ( "); sqlValue.append(" values ( "); sqlKey.append("id, name, lang, industry, " + "logo, style, brands, products," + " telphone, contactMan, address, status," + "createBy, createTime, updateBy, updateTime )"); sqlValue.append("seq_supply_info.nextval, :name, :lang, :industry, " + ":logo, :style, :brands, :products," + " :telphone, :contactMan, :address, :status," + ":createBy, :createTime, :updateBy, :updateTime )"); sqlKey.append(sqlValue); return baseDao.batchUpdateBeans(sqlKey.toString(), supplyList); }
上述代码经过测试没问题。
另外我们可以用namedparameterJdbcTemplate的更新方法,传入sql和map集合即可
public int addBuyerRank(User user, DBuyer buyer) { StringBuffer sqlKey = new StringBuffer("INSERT INTO BUYER ("); StringBuffer sqlValue = new StringBuffer(" Values( "); Map<String, Object> paramMap = new HashMap<String, Object>(); sqlKey.append(" id, "); sqlKey.append(" buyerid, "); sqlKey.append(" rank, "); sqlKey.append(" createby, "); sqlKey.append(" updateby, "); sqlKey.append(" updatetime) "); sqlValue.append("seq_buyer_rank"); sqlValue.append(" :buyerid, "); sqlValue.append(" :rank, "); sqlValue.append(" :createby, "); sqlKey.append(" createtime, "); sqlValue.append(" :createtime, "); sqlValue.append(" :updateby, "); sqlValue.append(" :updatetime)"); paramMap.put("buyerid", buyerRank.getBuyerId()) ; paramMap.put("rank", buyerRank.getRank()); paramMap.put("createby", buyerRank.getCreateBy()); paramMap.put("createtime", buyerRank.getCreateTime()); paramMap.put("updateby", buyerRank.getUpdateBy()); paramMap.put("updatetime", buyerRank.getUpdateTime()); sqlKey.append(sqlValue); int update = 0; try { update = baseDao.getNamedParameterJdbcTemplate().update(sqlKey.toString(), paramMap); } catch (DataAccessException e) { } return update; }
相关推荐
总结起来,`Spring JdbcDaoSupport`是简化数据库操作的有效工具,特别适合批量插入数据。通过`JdbcTemplate`的`batchUpdate`方法和`BatchPreparedStatementSetter`,我们可以高效地处理大量数据,同时保持代码的整洁...
2. **批量插入.docx**:可能包含关于如何在Spring Batch或Spring JDBC中实现批量数据插入的教程或案例,这通常涉及到批处理策略和事务管理。 3. **Eclipse快捷键.docx**:Eclipse是常用的Java开发IDE,这份文档可能...
此外,Spring的JdbcTemplate和NamedParameterJdbcTemplate也是进行数据库操作的强大工具,它们提供了一种更加面向对象的方式来执行SQL语句,包括批量更新。 总的来说,"SSH笔记-类型转换器和错误信息显示、复杂属性...
在“spring的增删改查”这个主题中,我们将深入探讨Spring如何与Oracle数据库配合,实现数据的CRUD(Create、Read、Update、Delete)操作。 1. **Spring JDBC模块** Spring提供了JDBC模块,使得开发者可以避免繁琐...
Spring提供了JdbcTemplate和NamedParameterJdbcTemplate两个核心类,它们是对JDBC的抽象和封装,消除了大量的模板代码和资源管理。JdbcTemplate提供了一种基于占位符的SQL执行方式,而NamedParameterJdbcTemplate则...
在Java开发中,Spring JDBC是Spring...总的来说,Spring JDBC提供了强大的批量处理能力,通过`NamedParameterJdbcTemplate`的`batchUpdate`方法,我们可以轻松地实现数据的批量插入和更新,有效提升数据库操作的效率。
5. **异常处理**:Spring将JDBC抛出的SQLException转换为Spring的DataAccessException,使得异常处理更统一,同时也隐藏了底层数据库的实现细节。 6. **批处理**:Spring JDBC支持批处理操作,可以一次执行多个SQL...
Spring的JdbcTemplate和NamedParameterJdbcTemplate提供了一种方便的方式来执行SQL语句,它们能够简化数据访问层的代码,减少错误,并且提高了可测试性。同时,Spring Data JPA和MyBatis等库进一步增强了ORM(对象...
- Spring支持声明式事务管理,通过AOP代理可以在不修改业务代码的情况下实现事务控制。 - 切面(Aspect):定义关注点,如日志记录、安全控制等,可插入到多个类的方法执行中。 3. **DI(依赖注入)**: - **...
7. **Batch Updates**: 支持批量SQL更新操作,通过`batchUpdate()`方法可以一次提交多条SQL语句,提高性能。 8. **CallableStatements**: 对于存储过程的调用,Spring-JDBC提供了CallableStatement的支持,可以使用...
10. **批处理**: Spring JDBC支持JDBC批处理,通过`JdbcTemplate`的`batchUpdate()`方法可以批量执行多条SQL更新语句,提高数据库操作效率。 11. **ErrorCodesSQLExceptionTranslator**: Spring JDBC提供了解析...
Spring JDBC集成Spring的事务管理功能,可以实现编程式事务管理或声明式事务管理。声明式事务管理通过在XML配置文件中声明事务边界,让Spring自动进行事务的开始、提交或回滚,降低了事务处理的复杂性。 **4. SQL...
10. **Spring Batch**:Spring Batch为批量处理提供了全面的支持,包括读取、处理和写入大量数据。掌握Job、Step、ItemReader、ItemWriter等核心组件的使用。 通过对《Spring宝典源码3》的学习,开发者不仅可以掌握...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
3. **Spring JDBC模块**:Spring提供了JdbcTemplate和NamedParameterJdbcTemplate工具类,简化了JDBC的代码编写。JdbcTemplate用于基本的SQL操作,而NamedParameterJdbcTemplate支持使用命名参数的SQL语句。 4. **...
Spring JDBC提供了`batchUpdate()`方法支持批量SQL执行,提高性能。 七、命名参数 `NamedParameterJdbcTemplate`类允许使用命名参数而不是传统的问号占位符,使SQL更易读,例如: ```java Map, Object> params = ...
经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...
6. **JDBC模板和数据源管理**:Spring简化了数据库操作,提供了JdbcTemplate和NamedParameterJdbcTemplate,同时可以管理数据库连接池,如HikariCP或C3P0。 7. **Spring Boot**:现代Spring应用的快速启动框架,...
Spring的JdbcTemplate支持批量操作,通过`batchUpdate`方法可以实现这一功能。 - **使用SqlParameterSourceUtils**:这个工具类提供了一些便捷的方法来处理SqlParameterSource对象,例如转换Map为SqlParameterSource...