首页 > 编程学习 > Nutz:自定义取值区间(可分页查询)
2013十二月15

Nutz:自定义取值区间(可分页查询)

使用示例:

			/**
			你可以自定义取数据区间的值,如下:

			offset=0,count=5     取0到5的记录
			offset=5,count=10    取5到15的记录
			page=3, offset=15,count=20   取15到35的记录
			**/
			int offset=0;
			int count=5;
			ExplicitPager pager=new ExplicitPager(offset,count);
			QueryResult file=daoCtl.listPage(dao, Oa_doc_file.class, cri,pager);

 

ExplicitPager 类源码:

package com.hits.common.page;

import org.nutz.dao.pager.Pager;

/** 
 * 类描述: 
 * 创建人:Wizzer 
 * 联系方式:www.wizzer.cn
 * 创建时间:2013-12-12 下午3:16:21 
 * @version 
 */
public class ExplicitPager extends Pager {

	private static final long serialVersionUID = 1L;
	int offset;
	int count;

	public ExplicitPager(int offset, int count) {
		super();
		this.offset = offset;
		this.count = count;
	}

	public void setOffset( int offset) {
		this.offset = offset;
	}

	public void setSelectCount( int count) {
		this.count = count;
	}

	@Override
	public int getPageSize() {
		return count;
	}

	@Override
	public int getOffset() {
		return offset;
	}

}

分页源代码(可参考上一篇文章,实现自定义SQL多表分页区间取值):

	/**
	 * 根据查询条件分页,返回封装好的QueryResult对象
	 * 
	 * @param dao
	 * @param obj
	 * @param cnd
	 * @param pager
	 * @return
	 */
	public <T> QueryResult listPage(Dao dao, Class<T> obj, Condition cnd,Pager pager) { 
		List<T> list = dao.query(obj, cnd, pager);
		pager.setRecordCount(dao.count(obj, cnd));// 记录数需手动设置
		return new QueryResult(list, pager);
	}
	/**
	 * 根据自定义SQL分页,返回封装好的QueryResult对象
	 * @param dao
	 * @param sql
	 * @param pager
	 * @return
	 */
        public  QueryResult listPageSql(Dao dao, Sql sql, Pager pager) {
		if(pager==null)
			return null;
		pager.setRecordCount(Daos.queryCount(dao, sql.getSourceSql()));// 记录数需手动设置
		sql.setPager(pager);
		sql.setCallback(Sqls.callback.records());
		dao.execute(sql);  
		return new QueryResult(sql.getList(Map.class), pager);
	}

1,027 total views, 2 views today

本文地址:https://blog.wizzer.cn/archives/2812 , 转载请保留.

本文目前尚无任何评论.

发表评论