本文共 2452 字,大约阅读时间需要 8 分钟。
T execute(PreparedStatementCreator psc, PreparedStatementCallback 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() { @Override public Integer doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException { ResultSet resultSet = ps.executeQuery(); resultSet.next(); return resultSet.getInt(1);//**拓展点2,改写返回值 } });
略
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的参数值
类似于PreparedStatementSetter,但用于批处理,需要指定批处理大小;
ConnectionCallback:通过回调获取JdbcTemplate提供的Connection,用户可在该Connection执行任何数量的操作; StatementCallback:通过回调获取JdbcTemplate提供的Statement,用户可以在该Statement执行任何数量的操作; PreparedStatementCallback:通过回调获取JdbcTemplate提供的PreparedStatement,用户可以在该PreparedStatement执行任何数量的操作; CallableStatementCallback:通过回调获取JdbcTemplate提供的CallableStatement,用户可以在该CallableStatement执行任何数量的操作;
RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。 RowCallbackHandler:用于处理ResultSet的每一行结果,用户需实现方法processRow(ResultSet rs)来完成处理,在该回调方法中无需执行rs.next(),该操作由JdbcTemplate来执行,用户只需按行获取数据然后处理即可。 ResultSetExtractor:用于结果集数据提取,用户需实现方法extractData(ResultSet rs)来处理结果集,用户必须处理整个结果集;
转载地址:http://kphgi.baihongyu.com/