一个通用的分页方法,不仅在数据库操作上分页了还在上层也做了分页.理解了这个就很容易理解其他框架的分页了.
java 代码
- import java.math. * ;
- public class Pager {
- private int totalRows; // 总行数
- private int pageSize=30 ; // 每页显示的行数
- private int currentPage; // 当前页号
- private int totalPages; // 总页数
- private int startRow; // 当前页在数据库中的起始行
- public Pager() {
- }
- public Pager( int _totalRows) {
- totalRows=_totalRows;
- totalPages=totalRows / pageSize;
- int mod=totalRows % pageSize;
- if (mod > 0 ) {
- totalPages ++ ;
- }
- currentPage=1 ;
- startRow=0 ;
- }
- public int getStartRow() {
- return startRow;
- }
- public int getTotalPages() {
- return totalPages;
- }
- public int getCurrentPage() {
- return currentPage;
- }
- public int getPageSize() {
- return pageSize;
- }
- public void setTotalRows( int totalRows) {
- this.totalRows = totalRows;
- }
- public void setStartRow( int startRow) {
- this.startRow = startRow;
- }
- public void setTotalPages( int totalPages) {
- this.totalPages = totalPages;
- }
- public void setCurrentPage( int currentPage) {
- this.currentPage = currentPage;
- }
- public void setPageSize( int pageSize) {
- this.pageSize = pageSize;
- }
- public int getTotalRows() {
- return totalRows;
- }
- public void first() {
- currentPage = 1 ;
- startRow = 0 ;
- }
- public void previous() {
- if (currentPage == 1 ) {
- return ;
- }
- currentPage -- ;
- startRow =(currentPage-1)*pageSize;
- }
- public void next() {
- if (currentPage<totalPages) {
- currentPage ++ ;
- }
- startRow=(currentPage-1)*pageSize;
- }
- public void last() {
- currentPage=totalPages;
- startRow=(currentPage-1 )*pageSize;
- }
- public void refresh(int _currentPage) {
- currentPage=_currentPage;
- if (currentPage>totalPages) {
- last();
- }
- }
- }
操作pager的PagerService
java 代码
- package com.game.common;
- public class PagerService {
- public Pager getPager(String currentPage,String pagerMethod, int totalRows) {
- // 定义pager对象,用于传到页面
- Pager pager= new Pager(totalRows);
- // 如果当前页号为空,表示为首次查询该页
- // 如果不为空,则刷新pager对象,输入当前页号等信息
- if (currentPage!=null ) {
- pager.refresh(Integer.parseInt(currentPage));
- }
- // 获取当前执行的方法,首页,前一页,后一页,尾页。
- if (pagerMethod!=null ) {
- if (pagerMethod.equals("first")) {
- pager.first();
- } else if (pagerMethod.equals("previous")) {
- pager.previous();
- } else if (pagerMethod.equals("next")) {
- pager.next();
- } else if (pagerMethod.equals("last")) {
- pager.last();
- }
- }
- return pager;
- }
- }
java 代码
- public class ProductsDaoImp extends HibernateDaoSupport implements ProductsDao {
- public int getRows() {
- String sql = " FROM Products ORDER BY gameNameCn " ;
- List list = this .getHibernateTemplate().find(sql);
- return list.size();
- }
- public void addProduct(Products pd) {
- this.getHibernateTemplate().save(pd);
- }
- public void deleteProduct(Products pd) {
- this.getHibernateTemplate().delete(pd);
- }
- public String getMaxId() {
- String sql="select max(gameId)+1 from Products";
- String noStr=null;
- List list=(List)this.getHibernateTemplate().find(sql);
- Iterator it=list.iterator();
- if(it.hasNext()){
- Object noInt=it.next();
- if(noInt==null){
- noStr="1";
- }else{
- noStr=noInt.toString();
- }
- }
- if(noStr.length()==1){
- noStr="000"+noStr;
- }else if(noStr.length()==2){
- noStr="00"+noStr;
- }else if(noStr.length()==2){
- noStr="0"+noStr;
- } else {
- noStr=noStr;
- }
- return noStr;
- }
- public List getProducts() {
- String hql="from products order by gameNameCn";
- this.getHibernateTemplate().find(hql);
- return null;
- }
- public List getProducts(final int pageSize, final int startRow) {
- return this.getHibernateTemplate().executeFind(new HibernateCallback(){
- public Object doInHibernate(Session session ) throws HibernateException, SQLException {
- Query query=session.createQuery("from products order by gameNameCn");
- query.setFirstResult(startRow);
- query.setMaxResults(pageSize);
- return query.list();
- }
- });
- }
- public Products getProducts(int gameId) {
- return (Products)this.getHibernateTemplate().get(Products.class, gameId);
- }
- public int getRows(String fieldName, String value) {
- String sql = " FROM Products where " + fieldName + " like '% " + value + " %' " + " ORDER BY gameNameCn " ;
- List list = this .getHibernateTemplate().find(sql);
- return list.size();
- }
- public List queryProducts(String fieldName, String value) {
- String sql = "FROM Products where" + fieldName + "like'%" + value + "%' " + "ORDER BY gameNameCn" ;
- return this.getHibernateTemplate().find(sql);
- }
- public List queryProducts(String fieldName, String value, final int pageSize,
- final int startRow) {
- final String sql = " FROM Products where " + fieldName+ " like '% " + value + " %' " + " ORDER BY gameNameCn " ;
- return this.getHibernateTemplate().executeFind(new HibernateCallback(){
- public Object doInHibernate(Session session ) throws HibernateException, SQLException {
- Query query=session.createQuery(sql);
- query.setFirstResult(startRow);
- query.setMaxResults(pageSize);
- return query.list();
- }
- });
- }
- public void updateProductd(Products pd) {
- this.getHibernateTemplate().update(pd);
- }
- }