Java – is there a portable way to have “select first 10 * from t” semantics?

I want to read the data in 10K record blocks from the database

I found result limits on Wikipedia. It seems obvious that this can't be done in a portable way

Another method might be the jdbctemplate, which provides many methods for queries, but how do I make sure enough rows have been read Through callbacks like rowmapper and resultsetextractor, it cannot be instructed to read enough data

Editor: I'm looking for a solution for the jdbctemplate. This post suggests using setmaxrows, which I ignored

Solution

Grab hibernate or JPA Both are familiar with various database dialects and will handle annoying DB details under the hood transparently

In Hibernate, you can use criteria #setfirstresult() and criteria #setmaxresults() for paging

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

In JPA, you can use query#setfirstresult() and query#setmaxresults() for similar operations

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();
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>