Example usage for org.springframework.jdbc.core ResultSetExtractor extractData

List of usage examples for org.springframework.jdbc.core ResultSetExtractor extractData

Introduction

In this page you can find the example usage for org.springframework.jdbc.core ResultSetExtractor extractData.

Prototype

@Nullable
T extractData(ResultSet rs) throws SQLException, DataAccessException;

Source Link

Document

Implementations must implement this method to process the entire ResultSet.

Usage

From source file:cc.tooyoung.common.db.JdbcTemplate.java

/**
 * Query using a prepared statement, allowing for a PreparedStatementCreator
 * and a PreparedStatementSetter. Most other query methods use this method,
 * but application code will always work with either a creator or a setter.
 * @param psc Callback handler that can create a PreparedStatement given a
 * Connection/*w  w  w  .  j  av  a2  s  .c  om*/
 * @param pss object that knows how to set values on the prepared statement.
 * If this is null, the SQL will be assumed to contain no bind parameters.
 * @param rse object that will extract results.
 * @return an arbitrary result object, as returned by the ResultSetExtractor
 * @throws DataAccessException if there is any problem
 */
public Object query(PreparedStatementCreator psc, final PreparedStatementSetter pss,
        final ResultSetExtractor rse) throws DataAccessException {

    Assert.notNull(rse, "ResultSetExtractor must not be null");
    if (ApiLogger.isTraceEnabled())
        ApiLogger.trace("Executing prepared SQL query");

    return execute(psc, new PreparedStatementCallback() {
        public Object doInPreparedStatement(PreparedStatement ps) throws SQLException {
            ResultSet rs = null;
            try {
                if (pss != null) {
                    pss.setValues(ps);
                }
                rs = ps.executeQuery();
                ResultSet rsToUse = rs;
                if (nativeJdbcExtractor != null) {
                    rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
                }
                return rse.extractData(rsToUse);
            } finally {
                JdbcUtils.closeResultSet(rs);
                if (pss instanceof ParameterDisposer) {
                    ((ParameterDisposer) pss).cleanupParameters();
                }
            }
        }
    }, false);
}

From source file:cc.tooyoung.common.db.JdbcTemplate.java

public Object 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 (ApiLogger.isTraceEnabled()) {
        ApiLogger.trace(new StringBuilder(64).append("Executing SQL query [").append(sql).append("]"));
    }//from   w w w  . ja va  2  s .c  o  m

    class QueryStatementCallback implements StatementCallback, SqlProvider {
        public Object doInStatement(Statement stmt) throws SQLException {
            ResultSet rs = null;
            try {
                rs = stmt.executeQuery(sql);
                ResultSet rsToUse = rs;
                if (nativeJdbcExtractor != null) {
                    rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
                }
                return rse.extractData(rsToUse);
            } finally {
                JdbcUtils.closeResultSet(rs);
            }
        }

        public String getSql() {
            return sql;
        }
    }
    return execute(new QueryStatementCallback(), false);
}

From source file:org.opoo.oqs.spring.SpringQuery.java

protected Object doCall() throws QueryException {
    final PreparedStatementSetter pss = new ArgTypePreparedStatementSetter(valueArray(), typeArray());
    final ResultSetExtractor rse = createResultSetExtractor(createListResultSetHandler());
    return jdbcTemplate.execute(getSql(), new CallableStatementCallback() {
        public Object doInCallableStatement(CallableStatement callableStatement)
                throws SQLException, DataAccessException {

            if (getQueryTimeout() > 0) {
                callableStatement.setQueryTimeout(getQueryTimeout());
            }//  w  w w.ja  v a2s  . co  m

            pss.setValues(callableStatement);

            boolean retVal = callableStatement.execute();
            int updateCount = callableStatement.getUpdateCount();
            if (log.isDebugEnabled()) {
                log.debug("CallableStatement.execute() returned '" + retVal + "'");
                log.debug("CallableStatement.getUpdateCount() returned " + updateCount);
            }

            ResultSet rs = callableStatement.getResultSet();
            try {
                if (rs != null && rse != null) {
                    return rse.extractData(rs);
                }
            } finally {
                JdbcUtils.closeResultSet(rs);
            }

            if (updateCount > 0) {
                return new Integer(updateCount);
            }
            return null;
        }
    });
}

From source file:org.springframework.jdbc.core.JdbcTemplate.java

public Object query(final String sql, final ResultSetExtractor rse) throws DataAccessException {
    if (sql == null) {
        throw new InvalidDataAccessApiUsageException("SQL must not be null");
    }/*from w ww. j  a  v  a2 s . c o m*/
    if (JdbcUtils.countParameterPlaceholders(sql, '?', "'\"") > 0) {
        throw new InvalidDataAccessApiUsageException(
                "Cannot execute [" + sql + "] as a static query: it contains bind variables");
    }
    if (logger.isDebugEnabled()) {
        logger.debug("Executing SQL query [" + sql + "]");
    }
    class QueryStatementCallback implements StatementCallback, SqlProvider {
        public Object doInStatement(Statement stmt) throws SQLException {
            ResultSet rs = null;
            try {
                if (getFetchSize() > 0)
                    stmt.setFetchSize(getFetchSize());
                rs = stmt.executeQuery(sql);
                ResultSet rsToUse = rs;
                if (nativeJdbcExtractor != null) {
                    rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
                }
                return rse.extractData(rsToUse);
            } finally {
                JdbcUtils.closeResultSet(rs);
            }
        }

        public String getSql() {
            return sql;
        }
    }
    return execute(new QueryStatementCallback());
}

From source file:org.springframework.jdbc.core.JdbcTemplate.java

/**
 * Query using a prepared statement, allowing for a PreparedStatementCreator
 * and a PreparedStatementSetter. Most other query methods use this method,
 * but application code will always work with either a creator or a setter.
 * @param psc Callback handler that can create a PreparedStatement given a
 * Connection//from   w  ww. ja  v a  2 s  .c  o  m
 * @param pss object that knows how to set values on the prepared statement.
 * If this is null, the SQL will be assumed to contain no bind parameters.
 * @param rse object that will extract results.
 * @return an arbitrary result object, as returned by the ResultSetExtractor
 * @throws DataAccessException if there is any problem
 */
protected Object query(PreparedStatementCreator psc, final PreparedStatementSetter pss,
        final ResultSetExtractor rse) throws DataAccessException {
    if (logger.isDebugEnabled()) {
        String sql = getSql(psc);
        logger.debug("Executing SQL query" + (sql != null ? " [" + sql + "]" : ""));
    }
    return execute(psc, new PreparedStatementCallback() {
        public Object doInPreparedStatement(PreparedStatement ps) throws SQLException {
            ResultSet rs = null;
            try {
                if (pss != null) {
                    pss.setValues(ps);
                }
                if (getFetchSize() > 0) {
                    ps.setFetchSize(getFetchSize());
                }
                rs = ps.executeQuery();
                ResultSet rsToUse = rs;
                if (nativeJdbcExtractor != null) {
                    rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
                }
                //??pojo
                return rse.extractData(rsToUse);
            } finally {
                JdbcUtils.closeResultSet(rs);
                if (pss instanceof ParameterDisposer) {
                    ((ParameterDisposer) pss).cleanupParameters();
                }
            }
        }
    });
}