需要new一个类
//1.总页数
private int totalPage;
//2.页码
private int pageNo;
//3.每页显示记录数
private int pageSize;
//4.总条数
private int totalNum;
//5.记录集
private List item;
public Page( int pageNo, int pageSize, int totalNum,
List item) {
this.pageNo = pageNo;
this.pageSize = pageSize;
this.totalNum = totalNum;
this.item = item;
int temp = totalNum/pageSize;
this.totalPage = (totalNum%pageSize == 0 ? temp : (temp +1));
}
dao层实现
public Page findObjects(QueryHelper queryHelper,int pageNo,int pageSize) {
Query query = this.getSession().createQuery(queryHelper.getQueryHql());
List<Object> list = queryHelper.getParams();
for(int i = 0;i<list.size();i++){
query.setParameter(i, list.get(i));
}
if(pageNo == 0){
pageNo = 1;
}
//获取总记录数
ScrollableResults scroll = query.scroll();
scroll.last();
int totalNum = scroll.getRowNumber() + 1;
//分页
query.setFirstResult((pageNo-1)*pageSize);
query.setMaxResults(pageSize);
List<T> item = query.list();
Page page = new Page(pageNo, pageSize, totalNum, item);
return page;
}
封装的tool类
public class QueryHelper {
//查询参数
private List<Object> params = new ArrayList<Object>();
//from子句
private String fromCaluse = "";
//where子句
private String whereCaluse = "";
//orderBy子句
private String orderByCaluse = "";
public static final String ORDER_BY_DESC = "desc";
public static final String ORDER_BY_ASC = "asc";
//form Info i
public QueryHelper(Class clazz,String as) {
fromCaluse = "from " + clazz.getSimpleName() + " " + as;
}
//and i.title like ?
public void addQuery(String queryStr,Object param){
//判断是否是第一个查询条件
if(whereCaluse.length() > 0){
whereCaluse += " and " + queryStr;
}else{
whereCaluse += " where " + queryStr;
}
//添加查询参数
params.add(param);
}
//返回查询语句
public String getQueryHql(){
return fromCaluse + whereCaluse + orderByCaluse;
}
//返回符合查询语句的记录数
public String getQueryCountHql() {
return "select count(*) " + fromCaluse + whereCaluse + orderByCaluse;
}
//返回查询参数
public List<Object> getParams(){
return params;
}
public void addOrderBy(String order,String sort) {
//判断是否是第一个查询条件
if (orderByCaluse.length() > 0) {
orderByCaluse += "," + order +" " + sort;
} else {
orderByCaluse += " order by " + order+" " + sort;
}
}
}