加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有一种便携式的方式来具有“SELECT FIRST 10 * FROM T”

发布时间:2020-12-14 05:05:09 所属栏目:Java 来源:网络整理
导读:我想从数据库中读取10k个记录的块中的数据. 我在维基百科上发现了Result limits,似乎很明显,这不能用便携式的方法来完成. 另一种方法可能是JdbcTemplate,它为查询提供了许多方法,但是我如何确定已经读取了足够的行.通过像RowMapper和ResultSetExtractor这样
我想从数据库中读取10k个记录的块中的数据.

我在维基百科上发现了Result limits,似乎很明显,这不能用便携式的方法来完成.

另一种方法可能是JdbcTemplate,它为查询提供了许多方法,但是我如何确定已经读取了足够的行.通过像RowMapper和ResultSetExtractor这样的回调,它不能被指示,读取了足够的数据.

编辑:我正在为JdbcTemplate寻找解决方案
这post建议使用我忽视的setMaxRows.

解决方法

Grab Hibernate或 JPA.两者都熟悉各种数据库方言,并将透明地处理引擎盖下的讨厌的DB细节.

在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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读