public static <T> List<T> page(Iterable<T> items, int page, int pageSize) { return Coll.range(items, (page - 1) * pageSize, page * pageSize); }
public static List<?> getPage(Iterable<?> items, int page, int pageSize, Integer size, BoolWrap isLastPage) { int pageFrom = Math.max((page - 1) * pageSize, 0); int pageTo = (page) * pageSize + 1; if (size != null) { pageTo = Math.min(pageTo, size); } List<?> range = U.list(Coll.range(items, pageFrom, pageTo)); isLastPage.value = range.size() < pageSize + 1; if (!isLastPage.value && !range.isEmpty()) { range.remove(range.size() - 1); } return range; // 1 item extra, to test if there are more results }
<T> List<T> runQuery(Class<T> resultType, Mapper<ResultSet, T> resultMapper, String sql, Map<String, ?> namedArgs, Object[] args, long skip, int limit) { ensureIsInitialized(); boolean needsPaging = skip > 0 || (limit >= 0 && limit < Integer.MAX_VALUE); if (limit == -1) { // unlimited limit = Integer.MAX_VALUE; } U.must(skip >= 0); U.must(limit >= 0); boolean pagingInSql = sql.contains("$skip") || sql.contains("$limit"); if (pagingInSql) { sql = replacePagingParams(sql, skip, limit); } List<T> results = fetchData(resultType, resultMapper, sql, namedArgs, args); if (needsPaging && !pagingInSql) { results = Coll.range(results, Nums.toInt(skip), Nums.toInt(skip + limit)); } U.must(results.size() <= limit, "Paging error: too many results!"); return results; }
<T> List<T> runQuery(Class<T> resultType, Mapper<ResultSet, T> resultMapper, String sql, Map<String, ?> namedArgs, Object[] args, long skip, int limit) { ensureIsInitialized(); boolean needsPaging = skip > 0 || (limit >= 0 && limit < Integer.MAX_VALUE); if (limit == -1) { // unlimited limit = Integer.MAX_VALUE; } U.must(skip >= 0); U.must(limit >= 0); boolean pagingInSql = sql.contains("$skip") || sql.contains("$limit"); if (pagingInSql) { sql = replacePagingParams(sql, skip, limit); } List<T> results = fetchData(resultType, resultMapper, sql, namedArgs, args); if (needsPaging && !pagingInSql) { results = Coll.range(results, Msc.toInt(skip), Msc.toInt(skip + limit)); } U.must(results.size() <= limit, "Paging error: too many results!"); return results; }