Spring JdbcTemplate中的回調

回調

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)來處理結果集,用戶必須處理整個結果集;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章