我想从数据库中读取数据,例如说1万条记录。
我在Wikipedia上找到了“结果限制”,而且很明显,这不能以可移植的方式使用sql来完成。
另一种方法是JdbcTemplate,它提供了许多查询方法,但是我如何确定已读取足够的行。通过诸如RowMapper和ResultSetExtractor之类的回调,无法表明已经读取了足够的数据。
抓住Hibernate或JPA。两者都熟悉各种数据库方言,并且将透明地处理令人讨厌的DB细节。
在Hibernate中,您可以使用Criteria#setFirstResult()和进行分页Criteria#setMaxResults()。例如
Criteria#setFirstResult()
Criteria#setMaxResults()
List users = session.createCriteria(User.class) .addOrder(Order.asc("id")) .setFirstResult(0) // Index of first row to be retrieved. .setMaxResults(10) // Amount of rows to be retrieved. .list();
在JPA中,您可以使用Query#setFirstResult()和进行类似操作Query#setMaxResults()。
Query#setFirstResult()
Query#setMaxResults()
List users = em.createQuery("SELECT u FROM User u ORDER BY u.id"); .setFirstResult(0) // Index of first row to be retrieved. .setMaxResults(10) // Amount of rows to be retrieved. .getResultList();