NutzCN Logo
问答 请问Nutz如何获取数据库中前10条数据?
发布于 3101天前 作者 qq_74967e40 4401 次浏览 复制 上一个帖子 下一个帖子
标签: dao

我看了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

或者这么说
别人要查前50条,但是每页20条,这个时候pager如何设置?

@qq_74967e40 这情况就不存在好不好, 每页就显示20条记录,查50条的话剩下30条显示在哪里?
自豪地采用 NutzCN ionic

显示在第二页啊~

这。。。难道不是个问题?

你都说第二页啦,那就2,20 去取第二页的数据啊。难道你想一次性查50条然后在页面显示成3页,那是页面的事,对数据库来说就查了一次50条
自豪地采用 NutzCN ionic

恕我愚钝
那第三页的时候是3,10了?库里面有N多条数据。

你想错方向了
自豪地采用 NutzCN ionic

如果你要的效果就是前50条,那么每页20的话,第3页应该查5,10
自豪地采用 NutzCN ionic

所以我感觉,这个问题,NUTZ可以考虑一下。

@qq_74967e40 考虑啥?

可以做一个任意偏移+大小的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

添加回复
请先登陆
回到顶部