回调

JdbcTemplate类支持的回调类:

1.预编译语句及存储过程创建回调:用于根据JdbcTemplate提供的连接创建相应的语句;

1.1 PreparedStatementCreator

<T> T execute(PreparedStatementCreator psc, PreparedStatementCallback<T> action)

PreparedStatementCreator:通过回调获取JdbcTemplate提供的Connection,由用户使用该Conncetion创建相关的PreparedStatement;

Integer count = jdbcTemplate.execute(
                new PreparedStatementCreator() {

                    @Override
                    public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
                        return con.prepareStatement("SELECT count(1) FROM student");//**拓展点1,改写sql
                    }
                },
                new PreparedStatementCallback<Integer>() {
                    @Override
                    public Integer doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
                        ResultSet resultSet = ps.executeQuery();
                        resultSet.next();
                        return resultSet.getInt(1);//**拓展点2,改写返回值
                    }
                });

1.2 PreparedStatementCreator 处理存储过程

2.预编译语句设值回调:用于给预编译语句相应参数设值;

2.1 PreparedStatementSetter:

public int update(String sql, PreparedStatementSetter pss) throws DataAccessException

通过回调获取JdbcTemplate提供的PreparedStatement,由用户来对相应的预编译语句相应参数设值;

jdbcTemplate.update("INSERT INTO student(id,name) VALUES (?,?)", new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                ps.setInt(1, 11);
                ps.setString(2, "小张");
            }
});

此拓展点可以设置SQL的参数值

2.2BatchPreparedStatementSetter:;

类似于PreparedStatementSetter,但用于批处理,需要指定批处理大小;

自定义功能回调:提供给用户一个扩展点,用户可以在指定类型的扩展点执行任何数量需要的操作;

     ConnectionCallback:通过回调获取JdbcTemplate提供的Connection,用户可在该Connection执行任何数量的操作;
     StatementCallback:通过回调获取JdbcTemplate提供的Statement,用户可以在该Statement执行任何数量的操作;
     PreparedStatementCallback:通过回调获取JdbcTemplate提供的PreparedStatement,用户可以在该PreparedStatement执行任何数量的操作;
     CallableStatementCallback:通过回调获取JdbcTemplate提供的CallableStatement,用户可以在该CallableStatement执行任何数量的操作;

结果集处理回调:通过回调处理ResultSet或将ResultSet转换为需要的形式;

     RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。
     RowCallbackHandler:用于处理ResultSet的每一行结果,用户需实现方法processRow(ResultSet rs)来完成处理,在该回调方法中无需执行rs.next(),该操作由JdbcTemplate来执行,用户只需按行获取数据然后处理即可。
     ResultSetExtractor:用于结果集数据提取,用户需实现方法extractData(ResultSet rs)来处理结果集,用户必须处理整个结果集;

最新文章

  1. iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 &quot;The operation couldn’t be completed.
  2. 花几分钟搭建一个自已的GIT服务器
  3. IIS10中使用OpenSSL来创建CA并且签发SSL证书
  4. iscroll双重滚动,向上滚动隐藏一部分,下拉后显示
  5. 一段linux shell 代码涉及for循环和if esle
  6. 【jmeter】JMeter函数学习
  7. 191. Number of 1 Bits
  8. oracle常用命令总结
  9. java中的IO二
  10. objective -c こだわり
  11. openGl超级宝典学习笔记 (1)第一个三角形
  12. 【转】Android Application 对象介绍
  13. JAVA类与对象(课堂总结)
  14. Dijkstra算法——单源最短路径问题
  15. 学web前端开发写给新手的建议,超实用!
  16. 为hadoop集群设置静态IP
  17. 1.ansible基本参数介绍
  18. tfs2015 生成与发布 配置
  19. APiCloud学习
  20. 小学生四则运算App实验成果

热门文章

  1. HTML5 Plus 拍照或者相册选择图片上传
  2. EasyUI ---- draggable购物车
  3. JavaScript 基础知识入门
  4. oracle创建/删除表空间、创建/删除用户并赋予权限
  5. 雷林鹏分享:C# 接口(Interface)
  6. 雷林鹏分享:C# 多线程
  7. JDBC 与 Bean Shell的使用(一)获取值,并且传递
  8. 关于一致性hash详细
  9. Jersey 2.x 探索新建的工程
  10. 用Javascript 实现倒计时