我想从数据库中读取 10k 条记录 block 中的数据。
我找到了 Result limits在 wikipedia 上,很明显这不能用 sql 以可移植的方式完成。
另一种方法可能是JdbcTemplate它提供了许多查询方法,但我怎么能确定已经读取了足够多的行。通过 RowMapper 和 ResultSetExtractor 之类的回调无法表明已读取了足够的数据。
编辑:我正在寻找 JdbcTemplate 的解决方案 这个post建议使用 setMaxRows我忽略了。
最佳答案
捕获 Hibernate或 JPA .两人都熟悉各种数据库方言,并且会在后台透明地处理令人讨厌的数据库细节。
在 Hibernate 中,您可以使用 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()
.
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();
关于java - 是否有一种可移植的方式来获得 "SELECT FIRST 10 * FROM T"语义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3400589/