SSH分页

先做分页机制代码

import java.util.ArrayList;
import java.util.Collection;

import com.cdg.bean.Dept;

public class Page {
	// 总记录数
	private long totalSize;
	// 单页显示的记录数
	private int pageSize;
	// 总页数
	private long totalPage;
	// 当前页数
	private int currentPage;
	// 查询记录
	@SuppressWarnings("unchecked")
	private Collection data;

	@SuppressWarnings("unchecked")
	public Page(Collection data, long totalSize, int pageSize, long totalPage,
			int currentPage) {
		this.data = (data != null ? data : new ArrayList<Object>(0));
		this.totalSize = totalSize;
		this.pageSize = pageSize;
		this.totalPage = totalPage;
		this.currentPage = currentPage;
	}

	public long getTotalSize() {
		return totalSize;
	}

	public void setTotalSize(long totalSize) {
		this.totalSize = totalSize;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public long getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(long totalPage) {
		this.totalPage = totalPage;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	@SuppressWarnings("unchecked")
	public Collection getData() {
		return data;
	}

	@SuppressWarnings("unchecked")
	public void setData(Collection data) {
		this.data = data;
	}

	@SuppressWarnings("unchecked")
	@Override
	public String toString() {
		// 总记录数 private long totalSize; //一页显示记录数 private int pageSize; //总页数
		// private long totalPage; //当前页数 private int currentPage;
		System.out.println("当前页数:" + getCurrentPage() + "  一页显示记录数:"
				+ getPageSize() + "  总记录数:" + getTotalSize() + "  总页数:"
				+ getTotalPage());
		Collection<Dept> list = getData();
		for (Dept d : list) {
			System.out.println("Id:" + d.getId() + " \t Description:"
					+ d.getDescription());
		}
		return super.toString();
	}

}


SSH框架分页方式

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UtilsDaoImpl extends HibernateDaoSupport implements IUtilsDao {

	public Long beanCount(String queryString) {
		Session session = this.getSession();
		Long i = ((Long) session.createQuery(queryString).iterate().next())
				.longValue();
		return i;
	}

	public void deleteBean(Object bean) {
		this.getHibernateTemplate().delete(bean);
	}

	public void deleteBean(Class<?> bean, Long id) {
		Object domainBean = getBeanById(bean, id);
		if (domainBean != null) {
			this.getHibernateTemplate().delete(domainBean);
		}
	}

	public List<?> getAllBean(String queryString) {
		return this.getHibernateTemplate().find(queryString);
	}

	public Object getBeanById(Class<?> bean, Long id) {
		return this.getHibernateTemplate().get(bean, id);
	}

	public Object loadBeanById(Class<?> bean, Long id) {
		return this.getHibernateTemplate().load(bean, id);
	}

	public List<?> pagingBean(final String queryString, final int firstResult,
			final int maxResults) {
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				query.setFirstResult(firstResult);
				query.setMaxResults(maxResults);
				return query.list();
			}
		});
	}

	public List<?> pagingBean1(final DetachedCriteria detachedCriteria,
			final int firstResult, final int maxResults) {
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Criteria criteria = detachedCriteria
						.getExecutableCriteria(session);

				// 查询总记录数
				Long total = (Long) criteria.setProjection(
						Projections.rowCount()).uniqueResult();
				System.out.println("total:" + total);
				/**
				 * 每次写上criteria.setProjection(null); 代表生成sql语句并且执行sql.
				 * 否则只是生成sql语句,并不执行.
				 */
				criteria.setProjection(null);
				criteria.setFirstResult(firstResult);
				criteria.setMaxResults(maxResults);
				return criteria.list();
			}
		});
	}

	public Page pagingBean2(final DetachedCriteria detachedCriteria,
			final int currentPage, final int pageSize) {
		/*
		 * //总记录数 private long totalSize; //一页显示记录数 private int pageSize; 
		 * //总页数 private long totalPage; //当前页数 private int currentPage;
		 */
		return (Page) this.getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session) {
						Criteria criteria = detachedCriteria
								.getExecutableCriteria(session);

						// 查询总记录数
						long total = (Long) criteria.setProjection(
								Projections.rowCount()).uniqueResult();
						System.out.println("total:" + total);
						/**
						 * 每次写上criteria.setProjection(?); 代表生成sql语句并且执行sql.
						 * 否则只是生成sql语句,并不执行.
						 */
						criteria.setProjection(null);
						criteria.setFirstResult(pageSize * (currentPage-1));
						criteria.setMaxResults(pageSize);
						return new Page(criteria.list(), total, pageSize,
								getTotalPage(total, pageSize), currentPage);
					}
				});
	}

	/**
	 * 求总页数
	 * @param total 总记录数
	 * @param pageSize	单页显示的记录数
	 * @return
	 */
	public long getTotalPage(long total, int pageSize) {
		if (total == 0L || pageSize == 0L) {
			return 0L;
		}
		long r = total % pageSize;
		long pages = (total - r) / pageSize;
		if (r > 0L) {
			pages++;
		}
		return pages;
	}

	public void saveBean(Object bean) {
		this.getHibernateTemplate().save(bean);
	}

	public void updateBean(Object bean) {
		this.getHibernateTemplate().update(bean);
	}
	
	public List<?> findByDetachedCriteria(final DetachedCriteria detachedCriteria) {
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Criteria criteria = detachedCriteria
						.getExecutableCriteria(session);
				return criteria.list();
			}
		});
	}

}

继承这个类即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值