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

本文介绍了如何使用面向对象的方式封装Java分页类PageBean,包括类的属性和方法,以及在Action、Service和Dao层如何使用该类进行分页查询操作,旨在提高代码复用性和规范性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍:

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

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

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

正文部分:

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

分页类PageBean

public class PageBean {

private int page; //当前页数

private int totalCount; //总记录数

private int totalPage; //总页数

private int limit; //每页显示的记录数

private List 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 getList() {

return list;

}

public void setList(List list) {

this.list = list;

}

}

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

Action类业务方法

//根据分类的ID查询商品

public String findByCid(){

PageBean pageBean=productService.findByPageCid(cid,page);//根据一级分类查询带分页的商品

//将PageBean存入到值栈中

ActionContext.getContext().getValueStack().set("pageBean", pageBean);

return "findByCid";

}

Service类业务方法

//根据一级分类的cid带分页的查询商品

public PageBean findByPageCid(Integer cid, int page) {

PageBean pageBean= new PageBean();

//设置当前页数

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 list=productDao.findByPageCid(cid,begin,limit);

pageBean.setList(list);

return pageBean;

}

Dao类业务方法

public List 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 list=this.getHibernateTemplate().execute(new PageHibernateCallback(hql, new Object[]{cid}, begin, limit));

if(list!=null && list.size()>0){

return list;

}

return null;

}

小结一下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值