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

我想从数据库中读取10k个记录的块中的数据.

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

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

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

解决方法

Grab HibernateJPA.两者都熟悉各种数据库方言,并将透明地处理引擎盖下的讨厌的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();

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...