springmvc4+hibernate4分页查询功能实现
发布时间 - 2026-01-10 22:22:11 点击率:次Springmvc+hibernate成为现在很多人用的框架整合,最近自己也在学习摸索,由于我们在开发项目中很多项目都用到列表分页功能,在此参考网上一些资料,以springmvc4+hibnerate4边学边总结,得出分页功能代码,虽然不一定通用,对于初学者来说有参考价值。

分页实现的基本过程:
一、分页工具类
思路:
1.编写Page类,定义属性,应该包括:查询结果集合、查询记录总数、每页显示记录数、当前第几页等属性。
2.编写Page类,定义方法,应该包括:总页数、当前页开始记录、首页、下一页、上一页、末页等方法
代码如下:
package cn.myic.model;
import java.util.List;
public class Page<E> {
// 结果集
private List<E> list;
// 查询记录总数
private int totalRecords;
// 每页多少条记录
private int pageSize;
// 第几页
private int pageNo;
/**
* @return 总页数
* */
public int getTotalPages(){
return (totalRecords+pageSize-1)/pageSize;
}
/**
* 计算当前页开始记录
* @param pageSize 每页记录数
* @param currentPage 当前第几页
* @return 当前页开始记录号
*/
public int countOffset(int currentPage,int pageSize){
int offset = pageSize*(currentPage-1);
return offset;
}
/**
* @return 首页
* */
public int getTopPageNo(){
return 1;
}
/**
* @return 上一页
* */
public int getPreviousPageNo(){
if(pageNo<=1){
return 1;
}
return pageNo-1;
}
/**
* @return 下一页
* */
public int getNextPageNo(){
if(pageNo>=getBottomPageNo()){
return getBottomPageNo();
}
return pageNo+1;
}
/**
* @return 尾页
* */
public int getBottomPageNo(){
return getTotalPages();
}
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
二、Dao层方法
思路:定义一个分页查询的方法,设置参数:当页页号和每页显示多少条记录
代码如下:
/**
* 分页查询
* @param hql 查询的条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return 返回查询记录集合
*/
@SuppressWarnings("unchecked")
@Override
public List<Course> queryForPage(int offset, int length) {
// TODO Auto-generated method stub
List<Course> entitylist=null;
try{
Query query = getSession().createQuery("from Course");
query.setFirstResult(offset);
query.setMaxResults(length);
entitylist = query.list();
}catch(RuntimeException re){
throw re;
}
return entitylist;
}
三、Service层方法
思路:
1.定义一个分页查询的方法,设置参数:当页页号和每页显示多少条记录,返回查询结果的分页类对象(Page)
2.通过Dao层,获取查询实体的总记录数
3.获取当前页开始记录数
4.通过Dao层,获取分页查询结果集
5.Set入page对象
代码如下:
/**
* 分页查询
* @param currentPage 当前页号:现在显示的页数
* @param pageSize 每页显示的记录条数
* @return 封闭了分页信息(包括记录集list)的Bean
* */
@SuppressWarnings("unchecked")
@Override
public Page queryForPage(int currentPage,int pageSize) {
// TODO Auto-generated method stub
Page page = new Page();
//总记录数
int allRow = courseDao.getAllRowCount();
//当前页开始记录
int offset = page.countOffset(currentPage,pageSize);
//分页查询结果集
List<Course> list = courseDao.queryForPage(offset, pageSize);
page.setPageNo(currentPage);
page.setPageSize(pageSize);
page.setTotalRecords(allRow);
page.setList(list);
return page;
}
四、Controller层方法
Controller层的设计,操作翻页查询时,只需要传递当前页号参数即可。
代码如下:
@RequestMapping(value = "/showAll.do")
public String findAllCourse(HttpServletRequest request,
HttpServletResponse response) {
try {
String pageNo = request.getParameter("pageNo");
if (pageNo == null) {
pageNo = "1";
}
Page page = courseService.queryForPage(Integer.valueOf(pageNo), 10);
request.setAttribute("page", page);
List<Course> course = page.getList();
request.setAttribute("courses", course);
} catch (Exception e) {
e.printStackTrace();
}
return "course/course_list";
}
五、View层jsp展示
jsp页面分页的几个按钮,根据当前页号的判断显示。
代码如下:
<tr>
<td colspan="6" align="center" bgcolor="#5BA8DE">共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页<br>
<a href="${path}/course/showAll.do?pageNo=${page.topPageNo }"><input type="button" name="fristPage" value="首页" /></a>
<c:choose>
<c:when test="${page.pageNo!=1}">
<a href="${path}/course/showAll.do?pageNo=${page.previousPageNo }"><input type="button" name="previousPage" value="上一页" /></a>
</c:when>
<c:otherwise>
<input type="button" disabled="disabled" name="previousPage" value="上一页" />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.pageNo != page.totalPages}">
<a href="${path}/course/showAll.do?pageNo=${page.nextPageNo }"><input type="button" name="nextPage" value="下一页" /></a>
</c:when>
<c:otherwise>
<input type="button" disabled="disabled" name="nextPage" value="下一页" />
</c:otherwise>
</c:choose>
<a href="${path}/course/showAll.do?pageNo=${page.bottomPageNo }"><input type="button" name="lastPage" value="尾页" /></a>
</td>
</tr>
页面效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# springmvc4
# 分页查询
# spring
# hibernate分页
# springmvc分页功能
# Spring+SpringMVC+Hibernate项目环境搭建的步骤(图文)
# 基于springMvc+hibernate的web application的构建
# 轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
# Java框架篇:Spring+SpringMVC+hibernate整合开发
# 浅谈SpringMVC+Spring3+Hibernate4开发环境搭建
# Spring+SpringMVC+Hibernate整合实例讲解
# 分页
# 每页
# 下一页
# 上一页
# 当前页
# 查询结果
# 首页
# 尾页
# 几个
# 在此
# 也在
# 很多人
# 只需要
# 几条
# 末页
# 翻页
# 开发项目
# 大家多多
# 条数
# 边学
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作大概多少钱一个,做一个平台网站大概多少钱?
利用vue写todolist单页应用
深圳网站制作平台,深圳市做网站好的公司有哪些?
高端企业智能建站程序:SEO优化与响应式模板定制开发
西安专业网站制作公司有哪些,陕西省建行官方网站?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在Windows环境下新建FTP站点并设置权限?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Android利用动画实现背景逐渐变暗
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
常州企业网站制作公司,全国继续教育网怎么登录?
如何获取上海专业网站定制建站电话?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Java垃圾回收器的方法和原理总结
Linux后台任务运行方法_nohup与&使用技巧【技巧】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel如何自定义错误页面(404, 500)?(代码示例)
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
如何在 React 中条件性地遍历数组并渲染元素
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
如何在局域网内绑定自建网站域名?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
高性价比服务器租赁——企业级配置与24小时运维服务
动图在线制作网站有哪些,滑动动图图集怎么做?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何快速登录WAP自助建站平台?
Laravel如何使用.env文件管理环境变量?(最佳实践)
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Android实现代码画虚线边框背景效果
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
原生JS获取元素集合的子元素宽度实例
活动邀请函制作网站有哪些,活动邀请函文案?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel distinct去重查询_Laravel Eloquent去重方法
JS去除重复并统计数量的实现方法
Swift中循环语句中的转移语句 break 和 continue
如何撰写建站申请书?关键要点有哪些?
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】

