Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да управлявате голям набор от данни с помощта на Spring MySQL и RowCallbackHandler

Ето едно Spring решение, базирано на отговор предоставено от BalusC.

class StreamingStatementCreator implements PreparedStatementCreator {
    private final String sql;

    public StreamingStatementCreator(String sql) {
        this.sql = sql;
    }

    @Override
    public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
        final PreparedStatement statement = connection.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        return statement;
    }
}

Някъде във вашия код:

DataSource dataSource = ...;
RowCallbackHandler rowHandler = ...;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.query(new StreamingStatementCreator("SELECT * FROM huge_table"), rowHandler);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL комит и транзакция

  2. MySql - Актуализирайте таблицата, като използвате оператор за избор от същата таблица

  3. Обобщена заявка без GROUP BY

  4. Как да промените размера на max_allowed_packet

  5. Вземете резултата от SQL заявката без формата на таблицата