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