先做分页机制代码
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();
}
});
}
}
继承这个类即可