ssh-hibernate中分页的展示

hibernate中分页查询
PageBean相关的实体类

1、pageBean的创建

package com.itheima.bos.utils;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;

/**
 * 封装分页属性
 * @author Lenovo
 *
 */
public class PageBean {
    private int currentPage;//当前页码
    private int pageSize;//每页显示的记录数
    private DetachedCriteria detachedCriteria;//查询条件
    private int total;//总记录数
    private List rows;//当前页需要展示的数据集合
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public DetachedCriteria getDetachedCriteria() {
        return detachedCriteria;
    }
    public void setDetachedCriteria(DetachedCriteria detachedCriteria) {
        this.detachedCriteria = detachedCriteria;
    }
    public int getTotal() {
        return total;
    }
    public void setTotal(int total) {
        this.total = total;
    }
    public List getRows() {
        return rows;
    }
    public void setRows(List rows) {
        this.rows = rows;
    }

}

2、通用方法中的Dao

    /**
     * 通用的分页查询方法
     */
    @Override
    public void pageQuery(PageBean pageBean) {
        int currentPage=pageBean.getCurrentPage();
        int pageSize=pageBean.getPageSize();
        DetachedCriteria detachedCriteria=pageBean.getDetachedCriteria();
        //查询total
        detachedCriteria.setProjection(Projections.rowCount());//指定hibernate框架发出SQL的形式
        List<Long> countList = (List<Long>) this.getHibernateTemplate().findByCriteria(detachedCriteria);
        Long count=countList.get(0);
        pageBean.setTotal(count.intValue());

        //查询rows
        detachedCriteria.setProjection(null);//设置回来
        int firstResult=(currentPage-1)*pageSize;
        int maxResults=pageSize;
        List rows = this.getHibernateTemplate().findByCriteria(detachedCriteria, firstResult, maxResults);
        pageBean.setRows(rows);

    }

3、Action的实现

/**
     * 查询所有的包括分页查询
     * 返回的格式应该是json
     * @throws IOException 
     */
    public String pageQuery() throws IOException{
        PageBean pageBean=new PageBean();
        pageBean.setCurrentPage(page);
        pageBean.setPageSize(rows);
        //创建离线提交查询对象
        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Staff.class);
        pageBean.setDetachedCriteria(detachedCriteria);
        staffService.pageQuery(pageBean);
        //使用json-lib将pageBean对象转为json,通过流出流写回页面
        //JSONObject----将单一对象转为json
        //JSONArray----将数组或者集合对象转为json
        JsonConfig jsonConfig=new JsonConfig();
        //指定哪些属性不需要转json
        jsonConfig.setExcludes(new String[]{"currentPage","detachedCriteria","pageSize"});

        String json = JSONObject.fromObject(pageBean,jsonConfig).toString();
        ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
        ServletActionContext.getResponse().getWriter().print(json);
        return NONE;
    }

4、页面的展示效果
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值