【菜鸟学Java】3:封装一个分页类PageBean

2024-05-25 16:08

本文主要是介绍【菜鸟学Java】3:封装一个分页类PageBean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        背景介绍:

        在做网上商城的项目时,有一个非常高频的功能需求,那就是做Web前端开发都知道的分页显示数据。当然要实现这个功能方法是非常多的,在我之前的做的项目接口管理系统中,使用的实现方式是假分页的方式,即将所有的数据查询出来,在前端进行分页,这个分页是使用前端框架的表格控件来完成的。因此我们在开发的时候,并没有在分页的实现上下多大的功夫,当然也就谈不上什么抽象和封装之类的编程技巧了。

        当然,真分页的方式也实现过,就是在底层封装一些分页查询的方法,将分页信息比如起始页以及每页显示多少条记录等参数信息传入,然后在方法内部使用原生的SQL和传入的参数一起组成SQL语句,执行SQL语句来实现分页。显然这也没有使用面向对象的思想来实现分页功能。

        那么如何用面向对象的方式来实现分页的功能呢?请往下看:

        正文部分:

        首先我们先来封装一个分页实体类PageBean,代码如下:

        分页类PageBean

        

<span style="font-size:18px;">public class PageBean<T> {private int page; //当前页数private int totalCount;  //总记录数private int totalPage;  //总页数private int limit;   //每页显示的记录数private List<T> list; //每页显示数据记录的集合;public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public int getLimit() {return limit;}public void setLimit(int limit) {this.limit = limit;}public List<T> getList() {return list;}public void setList(List<T> list) {this.list = list;}}</span>

        那么如何使用封装好的分页类呢?接着往下看:

        Action类业务方法

        

<span style="font-size:18px;">//根据分类的ID查询商品public String findByCid(){PageBean<Product> pageBean=productService.findByPageCid(cid,page);//根据一级分类查询带分页的商品//将PageBean存入到值栈中ActionContext.getContext().getValueStack().set("pageBean", pageBean);return "findByCid";}</span>

        Service类业务方法

        

<span style="font-size:18px;">//根据一级分类的cid带分页的查询商品public PageBean<Product> findByPageCid(Integer cid, int page) {PageBean<Product> pageBean= new PageBean<Product>();//设置当前页数pageBean.setPage(page);//设置每页显示的记录数int limit =8;pageBean.setLimit(limit);//设置总记录数int totalCount=0;totalCount = productDao.findCountCid(cid);pageBean.setTotalCount(totalCount);//设置总页数int totalPage=0;if(totalCount % limit ==0){totalPage=totalCount/limit;}else {totalPage= totalCount/limit +1;}pageBean.setTotalPage(totalPage);//每页显示的数据集合//从哪开始int begin=(page-1)*limit;List<Product> list=productDao.findByPageCid(cid,begin,limit);pageBean.setList(list);return pageBean;}</span>

        Dao类业务方法

        

<span style="font-size:18px;">public List<Product> findByPageCid(Integer cid, int begin, int limit) {String hql="select p from Product p join p.categorySecond cs join cs.category c where c.cid=?";//分页的另一种方法List<Product> list=this.getHibernateTemplate().execute(new PageHibernateCallback<Product>(hql, new Object[]{cid}, begin, limit));if(list!=null && list.size()>0){return list;}return null;}</span>

        小结一下:

        其实在之前做的项目中根本没有想到过使用类去对分页进行封装,在遇到分页的功能需求时,总是想着底层分页方法的编写和客户端分页如何实现,亦或是借助前端分页控件实现,将面向对象的编程思想跑到了九霄云外,可能是对面向对象的理解还不够深刻,因此根本没有那个想法,不怕不知道,就怕不知道,就是这个道理。

这篇关于【菜鸟学Java】3:封装一个分页类PageBean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1001984

相关文章

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.