sta*_*ker 13 java sql spring jdbc
我想从数据库中读取10k记录块中的数据.
我在维基百科上发现了结果限制,很明显这不能用sql以便携方式完成.
另一种方法可能是JdbcTemplate,它提供了许多查询方法,但我怎么能确定已经读取了足够的行.通过RowMapper和ResultSetExtractor等回调,无法指出已经读取了足够的数据.
编辑:我正在寻找JdbcTemplate的解决方案这篇文章建议使用我忽略的setMaxRows.
Bal*_*usC 15
获取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();
Run Code Online (Sandbox Code Playgroud)
在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();
Run Code Online (Sandbox Code Playgroud)
SQL:2008中有一个ANSI标准语法:
SELECT t.*
FROM TABLE t
FETCH FIRST 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)
...但目前大多数数据库都不支持它.
归档时间: |
|
查看次数: |
10524 次 |
最近记录: |