SSH2+Daoz项目中的分页查询
Page.java
- 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;
- else
- this.currentPage=totalPages;
- }
- if(1<currentPage&¤tPage<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;
- }
- }
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&¤tPage<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
- 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);
- }
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
- import java.io.Serializable;
- import java.sql.SQLException;
- import java.util.List;
- import org.hibernate.HibernateException;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.springframework.orm.hibernate3.HibernateCallback;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- public class BaseHibernateDao<T,ID extends Serializable> extends HibernateDaoSupport implements BaseDao<T,ID> {
- @Override
- public void delete(T entity) {
- this.getHibernateTemplate().delete(entity);
- }
- @Override
- public void deleteById(Class<T> entityClass, ID id) {
- delete(this.findById(entityClass, id));
- }
- @Override
- public T findById(Class<T> entityClass, ID id) {
- return (T)this.getHibernateTemplate().get(entityClass, id);
- }
- @Override
- public List<T> findAll(Class<T> entityClass) {
- String name=entityClass.getName();
- return this.getHibernateTemplate().find("from"+name);
- }
- @Override
- public void save(T entity) {
- this.getHibernateTemplate().save(entity);
- }
- @Override
- public void update(T entity) {
- this.getHibernateTemplate().update(entity);
- }
- @Override
- public List<Object> find(String hql, Object... values) {
- return this.getHibernateTemplate().find(hql,values);
- }
- @Override
- public Page<T> findByPage(final String hql,final String countHql,final int currentPage) {
- // TODO Auto-generated method stub
- return (Page<T>)this.getHibernateTemplate().execute(new HibernateCallback(){
- @Override
- public Object doInHibernate(Session session)
- throws HibernateException, SQLException {
- //初始化Page
- Page<T> page=new Page<T>(getCount(session, countHql));
- page.setCurrentPage(currentPage);
- //分页查询开始
- Query query=session.createQuery(hql);
- query.setFirstResult(page.getStartRow());
- query.setMaxResults(page.getPageSize());
- //把取得的实体list设置到Page 类中
- page.setResult(query.list());
- return page;
- }
- //获取总记录数
- private int getCount(Session session,String countHql){
- Long count=0L;
- List list=session.createQuery(countHql).list();
- if(list!=null&&list.size()==1)
- count=(Long)list.get(0);
- return count.intValue();
- }
- });
- }
- }
转载于:https://www.cnblogs.com/sailormoon/archive/2012/12/20/2827024.html
SSH2+Daoz项目中的分页查询相关推荐
- springboot 分页查询参数_10. Spring Boot 中的分页查询
在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain.*包下面的及格分页类的功能.使用分页查询常见有两种方式,一种是直接在程序中写死分页的参数 ...
- MySQL中的分页查询
MySQL中的分页查询 一.MySQL分页查询原则 在MySQL数据库中使用limit子句进行分页查询: MySQL分页中开始位置为0: 分页子句在查询语句的最后侧: 二.Limit子句(较为常 ...
- 在Oracle中使用分页查询
在Oracle中使用分页查询 什么是分页查询 为什么要分页 在哪分页 Oracle的ROWNUM Oracle如何写分页SQL 什么是分页查询 分页查询就是将所要浏览的内容进行合理分页,方便用户查询观 ...
- 如何实现Oracle中的分页查询
Oracle中的分页查询 以scott账户中的emp表和dept表为例 最内层:主要负责排序 String sql = "select e.* from emp e inner join d ...
- Spring data JPA -针对一对多关系中,分页查询一的一方部分,但查询条件中有多的一方参数
jpa框架让大家快速实现增删查改,真是太方便了.但是针对以下这个场景大家需要注意一下,我们项目中真实用到的,记录下来分享给大家. Account 和AccountDetail 是一对多关系,正常针对A ...
- mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...
mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...
- Oracle中进行分页查询的三种方法
前言: 在mysql数据库中,可以很简单的使用limit实现分页查询,不过limit不能在Oracle中使用,不过Oracle中有替代品rownum,接下来使用rownum去实现表emp(Oracle ...
- mysql中怎么分页查询_mysql怎样实现分页查询
mysql分页查询的方法:1.用具体字段代替[*]:2.先查寻索引:3.使用[between - and],id必须是连续递增的:4.保留上一页记录所在id. mysql分页查询的方法: 简述通常在M ...
- SQL Server中的分页查询
分页查询很简单,具体代码如下: --分页查询--查询1-3行数据 select top 3 * from emp order by sal desc;--查询4-6行数据 select top 3 * ...
最新文章
- winform剪贴板如何同时存储图片和文字_你真的会在Word里插入图片吗?没那么简单!...
- 对比学习(Contrastive Learning)综述
- 从零开始的 React 组件开发之路 (一):表格篇
- flex项目,file not found错误解决
- js 引入 缓存_引入故意缓存
- 160 - 29 cosh.3
- 常用的几种卷积神经网络介绍
- 4.2路由算法与路由协议概述
- what's new in vs 2005
- 数学建模中常用的方法
- 计算机读博不会编程,网友无奈吐槽学妹:不会写代码,不会配环境,读啥计算机?...
- 树莓派安装摄像头、耳机、话筒
- 汇编@data_macOS上的汇编入门(十三)——从编译到执行
- Gephi教程——基本操作
- 一页纸项目管理及模板下载
- Cboard修改-折线图/柱形图,显示数据、修改颜色、柱形图设置最大宽度
- 请检查网站服务器是否正常.,请检查服务器地址是否正确
- Jmeter HTTP Proxy Server 代理录制 IE无法录制到请求的问题解决
- 将.fits数据转换为.png图像
- 动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间
热门文章
- 上顿号符号_标点符号常见错误,读后涨知识了
- tcp伪报头_TCP和UDP报头的比较
- c语言程序加仿真,求助。C语言的程序和仿真
- activty在哪个栈里面_第二篇Activity:2、任务和返回堆栈(Tasks and Back Stack)之基本介绍...
- 拉取远程分支到本地分支_保险公司在本地没有分支机构可以投保吗?异地投保会影响理赔吗?...
- 厦门one_“断轴”频发,李想承认理想ONE存缺陷!曾声明悬架非常安全
- java 命令行eclipse_在命令行中运行eclipse中创建的java项目
- SparkSQL之关联mysql和hive查询
- spark 1.6.0 简单使用
- 如何用 Python + Scrapy 爬取视频?