标签:处理 resultset lex native http cal 执行 data tca
重要步骤说明:
4)获取到List对象后,就直接退出execute方法,逐步返回result,知道返回给最初的调用者
其他概念详见SpringJDBC解析前面的系列,这里着重看一下回调函数
public <T> T query(final String sql, final ResultSetExtractor<T> rse) throws DataAccessException { Assert.notNull(sql, "SQL must not be null"); Assert.notNull(rse, "ResultSetExtractor must not be null"); if (logger.isDebugEnabled()) { logger.debug("Executing SQL query [" + sql + "]"); } class QueryStatementCallback implements StatementCallback<T>, SqlProvider { public T doInStatement(Statement stmt) throws SQLException { ResultSet rs = null; try { rs = stmt.executeQuery(sql); ResultSet rsToUse = rs; if (nativeJdbcExtractor != null) { rsToUse = nativeJdbcExtractor.getNativeResultSet(rs); } //先进入RowMapperResultSetExtractor的回调函数,然后再回调PersonRowMapper的mapRow方法 return rse.extractData(rsToUse); } finally { JdbcUtils.closeResultSet(rs); } } public String getSql() { return sql; } } return execute(new QueryStatementCallback());
标签:处理 resultset lex native http cal 执行 data tca
原文地址:http://www.cnblogs.com/wade-luffy/p/6080011.html