1. 程式人生 > >SSH——基於datagrid實現分頁查詢

SSH——基於datagrid實現分頁查詢

sel 雙擊 datagrid auto roman .... img order 信息

1. 修改頁面中datagridURL地址,訪問action

    // 取派員信息表格
        $(‘#grid‘).datagrid( {
            iconCls : ‘icon-forward‘,
            fit : true,
            border : false,
            rownumbers : true,//顯示行號
            striped : true,
            pageList: [3,5,10],
            pagination : true
, toolbar : toolbar,//工具欄 url : "${pageContext.request.contextPath}/staffAction_pageQuery.action", //這裏修改url idField : ‘id‘, columns : columns, onDblClickRow : doDblClickRow//指定數據表格的雙擊行事件 });

項目路徑src\com\zang\bos\web\action下staffAction.java中的StaffAction類

/**
 * 取派員管理
 * @author zhaoqx
 *
 */
@Controller
@Scope("prototype")
public class StaffAction extends BaseAction<Staff>{
    //註入Service
    @Autowired
    private IStaffService staffService;
    
    private int page;//頁碼
    private int rows;//每頁顯示的記錄數
    public void setRows(int rows) {
        
this.rows = rows; } public void setPage(int page) { this.page = page; }

2. 創建PageBean類,封裝分頁信息

/**
 * 封裝分頁信息
 * @author zhaoqx
 *
 */
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 int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public DetachedCriteria getDetachedCriteria() { return detachedCriteria; } public void setDetachedCriteria(DetachedCriteria detachedCriteria) { this.detachedCriteria = detachedCriteria; } public List getRows() { return rows; } public void setRows(List rows) { this.rows = rows; } }

3. StaffAction中提供pageQuery方法,提供兩個setPagesetRows方法,接收頁面提交參數

    private int page;//頁碼
    private int rows;//每頁顯示的記錄數
    public void setRows(int rows) {
        this.rows = rows;
    }
    
    public void setPage(int page) {
        this.page = page;
    }
/** * 分頁查詢方法 * @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); //將PageBean對象轉為json返回 JSONObject jsonObject = JSONObject.fromObject(pageBean); String json = jsonObject.toString(); ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8"); ServletActionContext.getResponse().getWriter().print(json); return NONE; }

4. 在src\com\zang\bos\dao路徑下BaseDao中提供通用分頁查詢方法

      /**
     * 通用分頁查詢方法
     */
    public void pageQuery(PageBean pageBean) {
        int currentPage = pageBean.getCurrentPage();
        int pageSize = pageBean.getPageSize();
        DetachedCriteria detachedCriteria = pageBean.getDetachedCriteria();
        //總數據量----select count(*) from bc_staff
        //改變Hibernate框架發出的sql形式
        detachedCriteria.setProjection(Projections.rowCount());//select count(*) from bc_staff
        List<Long> list = this.getHibernateTemplate().findByCriteria(detachedCriteria);
        Long total = list.get(0);
        pageBean.setTotal(total.intValue());//設置總數據量
        detachedCriteria.setProjection(null);//修改sql的形式為select * from ....
        //重置表和類的映射關系
        detachedCriteria.setResultTransformer(DetachedCriteria.ROOT_ENTITY);
        //當前頁展示的數據集合
        int firstResult = (currentPage - 1) * pageSize;
        int maxResults = pageSize;
        List rows = this.getHibernateTemplate().findByCriteria(detachedCriteria, firstResult, maxResults);
        pageBean.setRows(rows);
    }

效果:

技術分享

SSH——基於datagrid實現分頁查詢