201312 月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);
}
本文地址:https://wizzer.cn/archives/2812 , 转载请保留.