我看了API,貌似没有发现呢。
只有一个limit方法,也不是很清晰。
是否有一个类似于top(10)这种方法?
我查了一下各个数据库的查询前十的方法不尽相同,所以请教一下,Nutz是否有相关的方法?
17 回复
```dao.query(User.class,Cnd.xxxxxxx,dao.createPager(1,10));
自豪地采用 NutzCN ionic
如果别人要查询前50条,但是pageSize是可以变的,这样怎么办?
每次计算一下?
pageNumber是1的时候,pageSize是20,如果是查询50条,就Pager(1,20),(2,20),(3,10)?
恕我愚钝,是这样吗?
pageSize可变?变就变呗,谁在乎变之前显示啥数据,按最新页数和页大小查就是了
自豪地采用 NutzCN ionic
@qq_74967e40 这情况就不存在好不好, 每页就显示20条记录,查50条的话剩下30条显示在哪里?
自豪地采用 NutzCN ionic
你都说第二页啦,那就2,20 去取第二页的数据啊。难道你想一次性查50条然后在页面显示成3页,那是页面的事,对数据库来说就查了一次50条
自豪地采用 NutzCN ionic
你想错方向了
自豪地采用 NutzCN ionic
如果你要的效果就是前50条,那么每页20的话,第3页应该查5,10
自豪地采用 NutzCN ionic
可以做一个任意偏移+大小的Pager
package net.wendal.nutzbook.util;
import org.nutz.dao.pager.Pager;
public class OffsetPager extends Pager {
private static final long serialVersionUID = -1385308131663113162L;
protected int offset = -1;
protected OffsetPager() {
}
/**
* 构建一个指定偏移量及大小的Pager
* @param offset 偏移量
* @param size 数据大小
*/
public OffsetPager(int offset, int size) {
super();
this.offset = offset;
setPageSize(size);
}
public int getOffset() {
if (offset > -1)
return offset;
return super.getOffset();
}
public void setOffset(int offset) {
this.offset = offset;
}
}
用法
dao.query(User.class, Cnd.xxxxx, new OffsetPager(0, 20)); // 0开始, 取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(20, 20)); // 第20条开始,取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(40, 10)); // 第40条开始,取10条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(0, 20)); // 0开始, 取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(20, 20)); // 第20条开始,取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(40, 10)); // 第40条开始,取10条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(0, 20)); // 0开始, 取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(20, 20)); // 第20条开始,取20条
dao.query(User.class, Cnd.xxxxx, new OffsetPager(40, 10)); // 第40条开始,取10条
@qq_74967e40
自豪地采用 NutzCN ionic
添加回复
请先登陆