Page.java

Java代码  
  1. import java.util.List;
  2. /**
  3. * 分页Page类
  4. * @author zhxing
  5. *
  6. * @param <T>
  7. */
  8. public class Page<T>{
  9. public final int DEFAULT_PAGESIZE= 10;   // 每页记录数
  10. private List<T> result = null;//页面数据
  11. private int totalRows;//总记录数
  12. private int pageSize=DEFAULT_PAGESIZE;//每页显示行数
  13. private int currentPage;//当前页数
  14. private int totalPages;//总页数
  15. private int startRow;//查询开始的记录数
  16. public Page(){
  17. }
  18. public Page(int totalRows){
  19. //初始化总记录数
  20. this.totalRows=totalRows;
  21. //初始化总页数
  22. this.totalPages=totalRows/pageSize;
  23. if(totalRows%pageSize!=0){
  24. totalPages++;
  25. }
  26. //初始化当前页数
  27. this.currentPage=1;
  28. //初始化查询开始的记录数
  29. this.startRow=0;
  30. }
  31. // 页内的数据列表.
  32. public List<T> getResult() {
  33. return result;
  34. }
  35. public void setResult(List<T> result) {
  36. this.result = result;
  37. }
  38. // 获得上一页
  39. public void previous(){
  40. if(currentPage==1)
  41. return;
  42. currentPage--;
  43. startRow=(currentPage-1)*pageSize;
  44. }
  45. //获得下一页
  46. public void next(){
  47. if(currentPage==totalPages){
  48. return;
  49. }
  50. currentPage++;
  51. startRow=(currentPage+1)*pageSize;
  52. }
  53. public int getCurrentPage() {
  54. return currentPage;
  55. }
  56. //设置当前页
  57. public void setCurrentPage(int currentPage) {
  58. if(currentPage>=totalPages){
  59. if(totalPages==0)
  60. this.currentPage=1;
  61. else
  62. this.currentPage=totalPages;
  63. }
  64. if(1<currentPage&&currentPage<totalPages){
  65. this.currentPage=currentPage;
  66. }
  67. if(currentPage<1){
  68. this.currentPage=1;
  69. }
  70. }
  71. public int getStartRow() {
  72. startRow=(currentPage-1)*pageSize;
  73. return startRow;
  74. }
  75. public void setStartRow(int startRow) {
  76. this.startRow = startRow;
  77. }
  78. public int getTotalRows() {
  79. return totalRows;
  80. }
  81. public void setTotalRows(int totalRows) {
  82. this.totalRows = totalRows;
  83. }
  84. public int getTotalPages() {
  85. return totalPages;
  86. }
  87. public int getPageSize() {
  88. return pageSize;
  89. }
  90. public boolean isStart() {
  91. return currentPage==1;
  92. }
  93. public boolean isEnd() {
  94. return currentPage==totalPages||totalPages==0;
  95. }
  96. }
import java.util.List;
/*** 分页Page类* @author zhxing** @param <T>*/
public class Page<T>{public final int DEFAULT_PAGESIZE= 10;   // 每页记录数 private List<T> result = null;//页面数据private int totalRows;//总记录数private int pageSize=DEFAULT_PAGESIZE;//每页显示行数private int currentPage;//当前页数private int totalPages;//总页数private int startRow;//查询开始的记录数public Page(){}public Page(int totalRows){//初始化总记录数this.totalRows=totalRows;//初始化总页数this.totalPages=totalRows/pageSize;if(totalRows%pageSize!=0){totalPages++;}//初始化当前页数this.currentPage=1;//初始化查询开始的记录数this.startRow=0;        }// 页内的数据列表.public List<T> getResult() {return result;}public void setResult(List<T> result) {this.result = result;}// 获得上一页public void previous(){if(currentPage==1)return;currentPage--;startRow=(currentPage-1)*pageSize;}//获得下一页public void next(){if(currentPage==totalPages){return;}currentPage++;startRow=(currentPage+1)*pageSize;}public int getCurrentPage() {return currentPage;}//设置当前页public void setCurrentPage(int currentPage) {if(currentPage>=totalPages){if(totalPages==0)this.currentPage=1;elsethis.currentPage=totalPages;}if(1<currentPage&&currentPage<totalPages){this.currentPage=currentPage;}if(currentPage<1){this.currentPage=1;}}  public int getStartRow() {startRow=(currentPage-1)*pageSize;return startRow;}public void setStartRow(int startRow) {this.startRow = startRow;}public int getTotalRows() {return totalRows;}public void setTotalRows(int totalRows) {this.totalRows = totalRows;}public int getTotalPages() {return totalPages;}public int getPageSize() {return pageSize;}public boolean isStart() {return currentPage==1;}public boolean isEnd() {return currentPage==totalPages||totalPages==0;}}

BaseDao.java

Java代码  
  1. import java.io.Serializable;
  2. import java.util.List;
  3. public interface BaseDao<T,ID extends Serializable> {
  4. /**
  5. * 保存实体
  6. * @param entity 实体类
  7. */
  8. public void save(T entity);
  9. /**
  10. * 删除实体
  11. * @param entity 实体类
  12. */
  13. public void delete(T entity);
  14. /**
  15. * 根据实体id 删除实体
  16. * @param entityClass  实体类
  17. * @param id  实体id
  18. */
  19. public void deleteById(Class<T> entityClass,ID id);
  20. /**
  21. * 更新实体
  22. * @param entity  实体类
  23. */
  24. public void update(T entity);
  25. /**
  26. * 根据实体id 查询单个实体
  27. * @param entityClass 实体类
  28. * @param id 实体id
  29. * @return
  30. */
  31. public T findById(Class<T> entityClass,ID id);
  32. /**
  33. * 列出所有实体集合
  34. * @param entityClass 实体类
  35. * @return 实体类List
  36. */
  37. public List<T> findAll(Class<T> entityClass);
  38. /**
  39. * 根据实体参数,查询符合条件的实体类集合
  40. * @param hql
  41. * @param values 参数
  42. * @return
  43. */
  44. public List<Object> find(String hql, Object... values);
  45. /**
  46. * 根据hql 语句,返回Page 类
  47. * @param page Page类
  48. * @param hql @param hql
  49. * @param currentPage 当前页码
  50. * @return
  51. */
  52. public Page<T> findByPage(final String hql,final String countHql,final int currentPage);
  53. }
import java.io.Serializable;
import java.util.List;public interface BaseDao<T,ID extends Serializable> {/*** 保存实体* @param entity 实体类*/public void save(T entity);/*** 删除实体* @param entity 实体类*/public void delete(T entity);/*** 根据实体id 删除实体* @param entityClass  实体类* @param id  实体id*/public void deleteById(Class<T> entityClass,ID id);/*** 更新实体* @param entity  实体类*/public void update(T entity);/*** 根据实体id 查询单个实体* @param entityClass 实体类* @param id 实体id* @return*/public T findById(Class<T> entityClass,ID id);/*** 列出所有实体集合* @param entityClass 实体类* @return 实体类List*/public List<T> findAll(Class<T> entityClass);/*** 根据实体参数,查询符合条件的实体类集合* @param hql * @param values 参数* @return*/public List<Object> find(String hql, Object... values);/*** 根据hql 语句,返回Page 类* @param page Page类* @param hql @param hql* @param currentPage 当前页码* @return
*/public Page<T> findByPage(final String hql,final String countHql,final int currentPage);}

BaseHibernateDao.java

Java代码  
  1. import java.io.Serializable;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import org.hibernate.HibernateException;
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7. import org.springframework.orm.hibernate3.HibernateCallback;
  8. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
  9. public class BaseHibernateDao<T,ID extends Serializable> extends HibernateDaoSupport implements BaseDao<T,ID> {
  10. @Override
  11. public void delete(T entity) {
  12. this.getHibernateTemplate().delete(entity);
  13. }
  14. @Override
  15. public void deleteById(Class<T> entityClass, ID id) {
  16. delete(this.findById(entityClass, id));
  17. }
  18. @Override
  19. public T findById(Class<T> entityClass, ID id) {
  20. return (T)this.getHibernateTemplate().get(entityClass, id);
  21. }
  22. @Override
  23. public List<T> findAll(Class<T> entityClass) {
  24. String name=entityClass.getName();
  25. return this.getHibernateTemplate().find("from"+name);
  26. }
  27. @Override
  28. public void save(T entity) {
  29. this.getHibernateTemplate().save(entity);
  30. }
  31. @Override
  32. public void update(T entity) {
  33. this.getHibernateTemplate().update(entity);
  34. }
  35. @Override
  36. public List<Object> find(String hql, Object... values) {
  37. return this.getHibernateTemplate().find(hql,values);
  38. }
  39. @Override
  40. public Page<T> findByPage(final String hql,final String countHql,final int currentPage) {
  41. // TODO Auto-generated method stub
  42. return (Page<T>)this.getHibernateTemplate().execute(new HibernateCallback(){
  43. @Override
  44. public Object doInHibernate(Session session)
  45. throws HibernateException, SQLException {
  46. //初始化Page
  47. Page<T> page=new Page<T>(getCount(session, countHql));
  48. page.setCurrentPage(currentPage);
  49. //分页查询开始
  50. Query query=session.createQuery(hql);
  51. query.setFirstResult(page.getStartRow());
  52. query.setMaxResults(page.getPageSize());
  53. //把取得的实体list设置到Page 类中
  54. page.setResult(query.list());
  55. return page;
  56. }
  57. //获取总记录数
  58. private int getCount(Session session,String countHql){
  59. Long count=0L;
  60. List list=session.createQuery(countHql).list();
  61. if(list!=null&&list.size()==1)
  62. count=(Long)list.get(0);
  63. return count.intValue();
  64. }
  65. });
  66. }
  67. }

转载于:https://www.cnblogs.com/sailormoon/archive/2012/12/20/2827024.html

SSH2+Daoz项目中的分页查询相关推荐

  1. springboot 分页查询参数_10. Spring Boot 中的分页查询

    在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain.*包下面的及格分页类的功能.使用分页查询常见有两种方式,一种是直接在程序中写死分页的参数 ...

  2. MySQL中的分页查询

    MySQL中的分页查询 一.MySQL分页查询原则 在MySQL数据库中使用limit子句进行分页查询: MySQL分页中开始位置为0: 分页子句在查询语句的最后侧: 二.Limit子句(较为常 ...

  3. 在Oracle中使用分页查询

    在Oracle中使用分页查询 什么是分页查询 为什么要分页 在哪分页 Oracle的ROWNUM Oracle如何写分页SQL 什么是分页查询 分页查询就是将所要浏览的内容进行合理分页,方便用户查询观 ...

  4. 如何实现Oracle中的分页查询

    Oracle中的分页查询 以scott账户中的emp表和dept表为例 最内层:主要负责排序 String sql = "select e.* from emp e inner join d ...

  5. Spring data JPA -针对一对多关系中,分页查询一的一方部分,但查询条件中有多的一方参数

    jpa框架让大家快速实现增删查改,真是太方便了.但是针对以下这个场景大家需要注意一下,我们项目中真实用到的,记录下来分享给大家. Account 和AccountDetail 是一对多关系,正常针对A ...

  6. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...

    mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...

  7. Oracle中进行分页查询的三种方法

    前言: 在mysql数据库中,可以很简单的使用limit实现分页查询,不过limit不能在Oracle中使用,不过Oracle中有替代品rownum,接下来使用rownum去实现表emp(Oracle ...

  8. mysql中怎么分页查询_mysql怎样实现分页查询

    mysql分页查询的方法:1.用具体字段代替[*]:2.先查寻索引:3.使用[between - and],id必须是连续递增的:4.保留上一页记录所在id. mysql分页查询的方法: 简述通常在M ...

  9. SQL Server中的分页查询

    分页查询很简单,具体代码如下: --分页查询--查询1-3行数据 select top 3 * from emp order by sal desc;--查询4-6行数据 select top 3 * ...

最新文章

  1. winform剪贴板如何同时存储图片和文字_你真的会在Word里插入图片吗?没那么简单!...
  2. 对比学习(Contrastive Learning)综述
  3. 从零开始的 React 组件开发之路 (一):表格篇
  4. flex项目,file not found错误解决
  5. js 引入 缓存_引入故意缓存
  6. 160 - 29 cosh.3
  7. 常用的几种卷积神经网络介绍
  8. 4.2路由算法与路由协议概述
  9. what's new in vs 2005
  10. 数学建模中常用的方法
  11. 计算机读博不会编程,网友无奈吐槽学妹:不会写代码,不会配环境,读啥计算机?...
  12. 树莓派安装摄像头、耳机、话筒
  13. 汇编@data_macOS上的汇编入门(十三)——从编译到执行
  14. Gephi教程——基本操作
  15. 一页纸项目管理及模板下载
  16. Cboard修改-折线图/柱形图,显示数据、修改颜色、柱形图设置最大宽度
  17. 请检查网站服务器是否正常.,请检查服务器地址是否正确
  18. Jmeter HTTP Proxy Server 代理录制 IE无法录制到请求的问题解决
  19. 将.fits数据转换为.png图像
  20. 动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间

热门文章

  1. 上顿号符号_标点符号常见错误,读后涨知识了
  2. tcp伪报头_TCP和UDP报头的比较
  3. c语言程序加仿真,求助。C语言的程序和仿真
  4. activty在哪个栈里面_第二篇Activity:2、任务和返回堆栈(Tasks and Back Stack)之基本介绍...
  5. 拉取远程分支到本地分支_保险公司在本地没有分支机构可以投保吗?异地投保会影响理赔吗?...
  6. 厦门one_“断轴”频发,李想承认理想ONE存缺陷!曾声明悬架非常安全
  7. java 命令行eclipse_在命令行中运行eclipse中创建的java项目
  8. SparkSQL之关联mysql和hive查询
  9. spark 1.6.0 简单使用
  10. 如何用 Python + Scrapy 爬取视频?