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真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
随机推荐
- centOS初了解--***安装node
在***买了一个VPS,用了差不多一年了,除了做FQ使用之外,同时也下载了一个node,用了express搭建了一个服务,同时我在博客园有博客,我也懒得转来转去了,直接做了一个重定向,跳转到了博客园. ...
- 复用传统C/S架构系统,升级成‘伪’B/S架构设计
应用场景:已经部署了传统系统又想要移动方式的场景.安全性考虑要求高的场景(核心资源要求在企业内部的场景). 我们 做了如下的系统设计: 核心是我们利用了WS做了内外穿透的设计.
- Java web--过滤器
本文引自:https://www.cnblogs.com/dudududu/p/8505177.html 参考博客:http://www.cnblogs.com/coderland/p/5902878 ...
- 获取父窗口元素或者获取iframe中的元素(相同域名下)
jquery方法 在父窗口中获取iframe中的元素 //方法1 $("#iframe的ID").contents().find("iframe中的元素"); ...
- h5页面苹果端浮动问题
最近在开发一个h5的app端,前端同事写好页面,我们后端java动态化页面,测试的时候发现安卓端什么浏览器都正常如下图1,可是苹果端无论什么浏览器都出现了底部菜单缺少了两个下图2图一:正常显示 图2, ...
- iar注释快捷键
选中多行后注释快捷键:Ctrl+K 取消多行注释快捷键:Ctrl+Shift+K
- POJ:3685-Matrix
Matrix Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 7879 Accepted: 2374 Description Gi ...
- OpenCV学习笔记(十一) 轮廓操作
在图像中寻找轮廓 首先利用Canny算子检测图像的边缘,再利用Canny算子的输出作为 寻找轮廓函数 findContours 的输入.最后用函数 drawContours 画出轮廓.边界Counto ...
- label标签的作用
在用户注册的时候,常常用户点击文字就需要将光标聚焦到对应的表单上面,这个是怎么实现的呢?就是下面我要介绍的<label>标签的for属性 定义:for 属性规定 label 与哪个表单元素 ...
- C#方法参数
使用静态字段来模拟全局变量. 如果调用者想要得到被调用者的值: 1.返回值 2.不管是实参还是形参,都是在内存中开辟了空间的. 3.方法的功能一定要单一. GetMax(int n1,int n2) ...