Java代码实现真分页
在JavaWeb项目中,分页是一个非常常见且重要的一个小方面。本次作为记载和学习,记录项目中出现的分页并做好学习记录。在这里,用的是SSH框架。框架可以理解如下图:

在JSP页面,描写的代码如下:
<div align="center">
<c:if test="${page.currentPage>1}">
<a href="show_findStessayAll.action?currentPage=1" >首页</a>
<a href="show_findStessayAll.action?currentPage=${page.currentPage-1 }">上一页</a>
</c:if>
<c:if test="${page.currentPage != page.totalPage }">
<a href="show_findStessayAll.action?currentPage=${page.currentPage+1 }">下一页</a>
<a href="show_findStessayAll.action?currentPage=${page.totalPage}">末页</a>
</c:if> <form action="show_findStessayAll.action">
共${page.totalPage}页
<input type="text" value="${page.currentPage}" name="currentPage" size="1">页
<input type="submit" value="go">
</form>
</div>
Action部分代码:
public String findAcadcommAll(){
//page存储页面数据
Page<Acadcomm> page = new Page<Acadcomm>();
//总记录数
int totalRecord = showService.findAcadcommRecord();
if(totalRecord!=0){
page.setTotalRecord(totalRecord);
//总页数
int totalPage = ( totalRecord % page.getPageSize() == 0) ? totalRecord / page.getPageSize():totalRecord / page.getPageSize()+1;
page.setTotalPage(totalPage);
//当前页
int currentPage = 1;
String currentPageString = req.getParameter("currentPage");
System.out.println("currentPageString:"+currentPageString);
if(currentPageString != null){
currentPage = Integer.parseInt(currentPageString);
}
page.setCurrentPage(currentPage);
System.out.println("currentPage:"+currentPage);
String hql = "from Acadcomm a"; // 查询语句
//要显示的数据
if(totalRecord % page.getPageSize()!=0 && currentPage==totalPage ){
page.setDataList(showService.queryForPage(acadcomm,hql, (currentPage-1)*page.getPageSize(), totalRecord % page.getPageSize()));
}else {
page.setDataList(showService.queryForPage(acadcomm,hql, (currentPage-1)*page.getPageSize(),page.getPageSize()));
}
}
req.setAttribute("page", page);
return "findAcadcommAllSuccess";
}
调用Service
public int findStessayRecord(String hql);//返回总记录数
public List<Stessay> queryForPage(Stessay stessay, String hql, int offset,
int length);//返回当前页面数据
ServiceImpl调用对应Dao里面的函数
@Override
public int findStessayRecord(String hql) {
// TODO Auto-generated method stub return stessayDao.getAllRowCount(hql); // 总记录数
}
@Override
public List<Stessay> queryForPage(Stessay stessay, String hql, int offset,
int length) {
// TODO Auto-generated method stub
return stessayDao.queryForPage(hql, offset, length);
}
Dao接口只有方法,不写具体实现:
public List<Stessay> findAll();
public int getAllRowCount(String hql);
public List<Stessay> queryForPage(final String hql, final int offset, final int length) ;
具体方法的实现交给DaoImpl:
/**
* 查询所有的记录数
* @param hql 查询条件
* @return 总记录数
*/
@Override
public int getAllRowCount(String hql) {
return this.getHibernateTemplate().find(hql).size();
}
/**
* 分页查询
* @param hql 查询条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return 查询的记录集合
*/
@Override
public List<Stessay> queryForPage(final String hql, final int offset, final int length) {
Session session = this.getSession();
Query q = session.createQuery(hql);
q.setFirstResult(offset);
q.setMaxResults(length);
List<Stessay> list = q.list(); System.out.println("--------PaperImpl---------------size() "+list.size());
session.close();
return list;
}
真分页就是页面显示多少,就从数据库里加载多少出来,这样一来就会提高效率。假分页就是将数据库里面所有的数据全部加载出来,但是只显示需要显示的部分,对于数据特别多的系统,这样下来,效率就会特别低。
Java代码实现真分页的更多相关文章
- Java代码实现 增删查 + 分页——实习第四天
今天项目内容已经开始了,并且已经完成好多基本操作,今天就开始总结今天学习到的内容,和我遇到的问题,以及分析这其中的原因. 内容模块: 1:Java代码实现对数据库的增删查: 2:分页且获取页面信息: ...
- 亿级别记录的mongodb分页查询java代码实现
1.准备环境 1.1 mongodb下载 1.2 mongodb启动 C:\mongodb\bin\mongod --dbpath D:\mongodb\data 1.3 可视化mongo工具Robo ...
- java常用公共代码二之分页代码的实现
在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!! 二.分页代码实现:在项目中,分页是一个项目中必不可少的,它可以防止我们从数据 ...
- 网站真分页js代码该怎么写?
真分页这个词对程序猿们来说,并不是一个陌生的词汇,但是如果你是初次学习真分页,或许还是得花点时间小小研究下,下面是之前去转盘网(喜欢的可以看看,也可以进入引擎模式)的真分页js部分代码,html部分的 ...
- 菜鸟学Java(十)——分页查询
今天继续跟大家说说一些非常基础的东西,这次我们说说分页查询.说到分页,可能很多人都听说过什么真分页.假分页的.简单解释一下,拿第二页,每页20条为例:真分:数据库里取 的就是21-40条:假分:数据库 ...
- [小技巧]让你的GridView支持IQueryable,并自动实现真分页
众所周知,asp.net自带的GridView在自带分页方面设计得很2,因为它是假分页,即内存分页.而且它不智能支持强大的Iqueryable. 但这表明微软忽略了现实中的分页需求吗?答案应该不是,我 ...
- Unity3D研究院之打开Activity与调用JAVA代码传递参数
原地址:http://www.xuanyusong.com/archives/667 Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发 ...
- AspNetPager实现真分页+多种样式
真假分页 分页是Web应用程序中最常用到的功能之一.当从数据库中获取的记录远远超过界面承载能力的时候,使用分页可以使我们的界面更加美观,更加的用户友好.分页包括两种类型:真分页和假分页. 其中假分页就 ...
- Jsp分页实例---真分页
网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
随机推荐
- IntelliJ IDEA 2016 汉化说明:
把汉化包解压后,然后将resources_cn.jar 复制到 .lib 目录,重新打开就是中文.
- cx_freeze的安装使用
python是一个非常非常优秀的编程语言,它最大的特性就是跨平台.python程序几乎可以在所有常见的平台中进行使用,而且大部分无需修改任何代码!不过,python也有一点点小缺憾(这个是由于自身本质 ...
- python——字符串的操作判断
s为字符串 s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False. s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False. s ...
- lambda & 三元运算
lambda & 三元运算 lambda: 1 >>> def add(x,y): #定义一个加法函数 2 return x+y ...
- ABAP 7.51 構文書き方変換について
便利になったなぁと感じたコマンドのメモです.NetWeaver7.40 SP2から使えます. SAP NetWeaver AS for ABAP 7.51 Innovation Package – O ...
- 笔记-mysql-管理及基础操作
笔记-mysql使用-管理及基础操作 1. 简介 mysql是一个免费的关系型数据库,不过好像被oracle收购了.... 希望它继续免费. 1.1. 相关术语 数据库,表,列,行,冗 ...
- 笔记-DB-mongodb-常用操作-1
笔记-DB-mongodb-常用操作-1 1. 启动及连接 1.1. 启动 启动mongod windows下: 1. 如已添加服务 net start <service name> ...
- 「微信小程序免费辅导教程」26,基础内容组件rich-text体验
- P3819 松江1843路(洛谷月赛)
P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...
- Java基本数据类型总结二
Java 基本数据类型总结二 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过 ...