sql >> Database >  >> RDS >> Mysql

Een grote dataset beheren met Spring MySQL en RowCallbackHandler

Hier is een Spring-oplossing gebaseerd op de antwoord geleverd door 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;
    }
}

Ergens in je code:

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


  1. Hoe expressie in select-statement in Postgres te evalueren

  2. MySQL Basic Database Administration Commando's - Deel I

  3. Ontdek waar uw PHP-code vertraagt ​​(prestatieprobleem)

  4. Hoe kan ik het trage querylogboek van MySQL inschakelen zonder MySQL opnieuw te starten?