本文共 1575 字,大约阅读时间需要 5 分钟。
重要步骤说明:
4)获取到List对象后,就直接退出execute方法,逐步返回result,知道返回给最初的调用者
其他概念详见SpringJDBC解析前面的系列,这里着重看一下回调函数
publicT query(final String sql, final ResultSetExtractor 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 , 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());
转载地址:http://mwtwa.baihongyu.com/