使用JdbcTemplate进行批量操作
2015-11-03 09:47
429 查看
绝大多数JDBC驱动针对批量调用相同的prepared statement对象提供了性能提升。通过将这些更新操作封装到一个批量操作中,可以大量减少与数据库的操作频繁度。 本章节将详细描述使用JdbcTemplate或者SimpleJdbcTemplate进行批量操作的流程。
1、使用JdbcTemplate进行批量操作
JdbcTemplate的批量操作特性需要实现特定的接口BatchPreparedStatementSetter 来 进行的, 通过实现这个接口,并将其传入batchUpdate 方法进行调用。 这个接口有两个方法需要实现。一个叫做getBatchSize 来提供当前需要批 量操作的数量。另外一个方法是setValues 允许你为prepared statement设置参数。这个方法将在整个过程中被调用的次数,则取决于你在getBatchSize 中所指定的大小。 下面的示例展示了根据传入的list参数更新actor表,而传入的list同时作为批量操作的参数。
Java代码
如果是通过读取文件进行批量操作,那么你可能需要一个特定的批量操作的数量,不过最后一次的批量操作,你可能没有那么多数量的记录。 在这种情况下,你可以实现InterruptibleBatchPreparedStatementSetter 接 口,从而允许你在某些情况中断批量操作,isBatchExhausted 方法允许指定一个终止批量操作的信号量。
2、使用SimpleJdbcTemplate进行批量操作
SimpleJdbcTemplate 类提供了另外一种批量操作的方式。无需实现 一个特定的接口,只需要提供所有在调用过程中要用到的参数,框架会遍历这些参数值,并使用内置的prepared statement类进行批量操作。API将根据你是否使用命名参数而有所不同。对于使用命名参数的情况,需要提供一个SqlParameterSource 的数组, 其中的每个元素将将作为批量操作的参数。 你可以使用SqlParameterSource.createBatch 方法, 通过传入一个JavaBean的数组或者一个包含了参数键值对的Map数组来创建这个数组。
下面的示例展示了使用命名参数进行批量更新的方法:
Java代码
public class JdbcActorDao implements ActorDao {
1、使用JdbcTemplate进行批量操作
JdbcTemplate的批量操作特性需要实现特定的接口BatchPreparedStatementSetter 来 进行的, 通过实现这个接口,并将其传入batchUpdate 方法进行调用。 这个接口有两个方法需要实现。一个叫做getBatchSize 来提供当前需要批 量操作的数量。另外一个方法是setValues 允许你为prepared statement设置参数。这个方法将在整个过程中被调用的次数,则取决于你在getBatchSize 中所指定的大小。 下面的示例展示了根据传入的list参数更新actor表,而传入的list同时作为批量操作的参数。
Java代码
如果是通过读取文件进行批量操作,那么你可能需要一个特定的批量操作的数量,不过最后一次的批量操作,你可能没有那么多数量的记录。 在这种情况下,你可以实现InterruptibleBatchPreparedStatementSetter 接 口,从而允许你在某些情况中断批量操作,isBatchExhausted 方法允许指定一个终止批量操作的信号量。
2、使用SimpleJdbcTemplate进行批量操作
SimpleJdbcTemplate 类提供了另外一种批量操作的方式。无需实现 一个特定的接口,只需要提供所有在调用过程中要用到的参数,框架会遍历这些参数值,并使用内置的prepared statement类进行批量操作。API将根据你是否使用命名参数而有所不同。对于使用命名参数的情况,需要提供一个SqlParameterSource 的数组, 其中的每个元素将将作为批量操作的参数。 你可以使用SqlParameterSource.createBatch 方法, 通过传入一个JavaBean的数组或者一个包含了参数键值对的Map数组来创建这个数组。
下面的示例展示了使用命名参数进行批量更新的方法:
Java代码
public class JdbcActorDao implements ActorDao {
相关文章推荐
- 练习!!年月日判断并输出第多少天
- MyBatis入门(七)---逆向工程
- pymongo MongoClient
- SHELL syntax error:unexpected end of file 提示错误; windows下修改linux文件导致linux文件无法使用
- CentOS上部署开发环境
- TS科普5 PES包解析
- [转载] shell awk入门
- Lable字体自适应宽度
- SQL SERVER安装提示“安装了 Microsoft Visual Studio 2008 的早期版本
- css里的属性
- Sublime Text 最佳插件列表(转)
- ubuntu编译服务器搭建
- 斗地主洗牌+发牌+排序
- 枚举类型的使用方法
- PM 周刊第 3 期 2015-11-02
- Spark: Transformation和Action
- structs2与ajax结合的经验
- SQL2008 SQL Server 代理服务提供的凭据无效
- SpannableString属性详解
- asp.net出现“未将对象引用设置到对象的实例”