Paginated queries with automatic total count calculation. Supports specifying result fields.
public <E> LimitResult<List<E>,E> query(Class<E> cls, LimitSelect limitSelect)
public <E> LimitResult<List<E>,E> query(Class<E> cls, LimitSelect limitSelect, LimitRange range)
public <E> LimitResult<List<E>,E> query(Class<E> cls, LimitSelect limitSelect, List resultFields)
public <E> LimitResult<List<E>,E> query(Class<E> cls, LimitSelect limitSelect, LimitRange range, List resultFields)
Returns: LimitResult — contains getResult() (data list) and getTotal() (total count).
Example:
// Define pagination query
LimitSelect limitSelect = new LimitSelect() {
public SelectOrderByStep from(SelectSelectStep select) {
return select.from(T("user_table"))
.where(jt.conditions("name%", name, "birthday>=", beginDate));
}
public List<OrderField> orderBy() {
return Arrays.asList(F("birthday").desc());
}
};
// Mode 1: return all data, no total count
LimitResult res1 = jt.query(User.class, limitSelect);
// Mode 2: return limit rows, no total count
LimitResult res2 = jt.query(User.class, limitSelect, LimitRange.of(20));
// Mode 3: paginate (offset starts at 0), calculate total count
LimitResult res3 = jt.query(User.class, limitSelect,
LimitRange.of(20, 0));
// res3.getResult() returns data, res3.getTotal() returns total count
// Mode 4: specify result fields
LimitResult res4 = jt.query(User.class, limitSelect,
LimitRange.of(20, 0), Arrays.asList("id", "name"));
// LimitRange.all(): return all data, no total count
LimitResult res5 = jt.query(User.class, limitSelect, LimitRange.all());
// Access results
List<User> data = res3.getResult();
int total = res3.getTotal();
About the LimitSelect interface:
// LimitSelect is a interface:
public interface LimitSelect {
// Build the FROM clause; the select parameter allows specifying query fields
SelectOrderByStep from(SelectSelectStep select);
// Optional: return order fields; return null to skip ordering
default List<OrderField> orderBy() { return null; }
}

















