PageRequest kullanılabilir
Örnek
Şöyle yaparız
PageRequest pageRequest = PageRequest.of(0,10);Page<Account> page; List<Account> list; do { page = accountRepository.findAll(pageRequest); list = page.getContent(); page = page.next(); } while (!page.isEmpty());
2. JPA Kullanıyorsak
TypedQuery kullanılabilir
Örnek
Şöyle yaparız
int startPosition = 0;
int batchSize = 10;
while(true) {
TypedQuery<Account> query = em.createQuery("SELECT a FROM Account a", Account.class);
query.setFirstResult(startPosition);
query.setMaxResults(batchSize_size);
List<Account> list = query.resultList();
if (list.size() == 0) {
break;
}
startPosition += batchSize;
}3. SQL ile Offset + Limit
TypedQuery kullanılabilir
Örnek
Şöyle yaparız
Session session = em.unwrap(Session.class);
session.doReturningWork(new ReturningWork<>() {
@Override
public Integer execute(Connection connection) throws SQLException {
int offsetPos = 0;
PreparedStatement preparedStatement = connection
.prepareStatement("SELECT * FROM ACCOUNTS LIMIT ? OFFSET ?");
while (true) {
preparedStatement.setInt (1, 10);
preparedStatement.setInt (2, offsetPos);
ResultSet resultSet = preparedStatement.executeQuery();
if(!resultSet.next()) break; // break when finish reading
do {
System.out.println(resultSet.getString("user_id"));
} while (resultSet.next());
offsetPos += 10;
}
}
}4. Statement.setFetchSize kullanılabilir
JDBC Statement Arayüzü yazısına bakınız
Hiç yorum yok:
Yorum Gönder