Здесь я использую драйвер JDBC PostgreSQL.
Ниже приведен мой код:
Код: Выделить всё
@Transactional(readOnly = true)
private void fetchAndRowCallBackProcessing(CSVPrinter csvPrinter) {
jdbcTemplate.query(con -> {
con.setAutoCommit(false); // This is not needed since I have used @Transactional
PreparedStatement ps = con.prepareStatement(
SQL,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY
);
ps.setFetchSize(1000);
LOGGER.info("jdbcTemplate fetch size - " + jdbcTemplate.getFetchSize()); // Logged -1
LOGGER.info("ps fetch size - " + ps.getFetchSize()); // Logged 1000
return ps;
},
rs -> {
try {
if (rs.getString(1).equals("1740983035847")) // Just for debugging {
LOGGER.info("rs fetch size - " + rs.getFetchSize()); // Logged 1000
}
csvPrinter.printRecord( rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9));
} catch (IOException e) {
e.printStackTrace();
}
});
}
Примечание. Я провожу отладку на своем локальном компьютере, поэтому других входящих запросов нет.
Подробнее здесь: https://stackoverflow.com/questions/798 ... sult-set-i
Мобильная версия