ssh mysql分页demo_java-SSH2实现数据库和界面的分页

分页应该是在我们开发web应用时经常要做的工作,能够比较简洁的实现数据库和视图层的分页十分重要。

在数据库层利用hibernate进行数据库的分页,将从数据库中查询出的数据封装为javabean;在视图层就可以方便的实现分页。

创建PageBean

package com.fishing.common.bean;

import java.util.List;

@SuppressWarnings("unchecked")

public class PageBean {

private List list; // 要返回的某一页的记录列表

private int allRow; // 总记录数

private int totalPage; // 总页数

private int currentPage; // 当前页

private int pageSize; // 每页记录数

private boolean isFirstPage; // 是否为第一页

private boolean isLastPage; // 是否为最后一页

private boolean hasPreviousPage; // 是否有前一页

private boolean hasNextPage; // 是否有下一页

public List getList() {

return list;

}

public void setList(List list) {

this.list = list;

}

public int getAllRow() {

return allRow;

}

public void setAllRow(int allRow) {

this.allRow = allRow;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

/** */

/**

* 初始化分页信息

*/

public void init() {

this.isFirstPage = isFirstPage();

this.isLastPage = isLastPage();

this.hasPreviousPage = isHasPreviousPage();

this.hasNextPage = isHasNextPage();

}

/** */

/**

* 以下判断页的信息,只需getter方法(is方法)即可

*

* @return

*/

public boolean isFirstPage() {

return (currentPage == 1);// 如是当前页是第1页

}

public boolean isLastPage() {

return currentPage == totalPage; //如果当前页是最后一页

}

public boolean isHasPreviousPage() {

return currentPage != 1; //只要当前页不是第1页

}

public boolean isHasNextPage() {

return currentPage != totalPage; //只要当前页不是最后1页

}

/** */

/**

* 计算总页数,静态方法,供外部直接通过类名调用

*

* @param pageSize

* 每页记录数

* @param allRow

* 总记录数

* @return 总页数

*/

public static int countTotalPage(final int pageSize, final int allRow) {

int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow

/ pageSize + 1;

return totalPage;

}

/** */

/**

* 计算当前页开始记录

*

* @param pageSize

* 每页记录数

* @param currentPage

* 当前第几页

* @return 当前页开始记录号

*/

public static int countOffset(final int pageSize, final int currentPage) {

final int offset = pageSize * (currentPage - 1);

return offset;

}

/** */

/**

* 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替

*

* @param page

* 传入的参数(可能为空,即0,则返回1)

* @return 当前页

*/

public static int countCurrentPage(int page) {

final int curPage = (page == 0 ? 1 : page);

return curPage;

}

}

在Dao的抽象接口BaseDao中添加方法:

public List queryForPage(final String hql, final int offset,

final int length);

在Dao的实现类JianSheDWDaoImpl中实现方法

public List queryForPage(final String hql, final int offset,

final int length) {

List list = getHibernateTemplate().executeFind(new HibernateCallback() {

public Object doInHibernate(Session session)

throws HibernateException, SQLException {

Query query = session.createQuery(hql);

query.setFirstResult(offset);

query.setMaxResults(length);

List list = query.list();

return list;

}

});

return list;

}

在service抽象层接口JianSheDWService中添加方法:

public PageBean queryForPage(int pageSize,int currentPage);

在service实现类中实现方法:

public PageBean queryForPage(int pageSize, int page) {

final String hql = "from JianSheDWBean"; // 查询语句

int allRow = this.baseDao.getAllRowCount(hql); // 总记录数

int totalPage = PageBean.countTotalPage(pageSize, allRow); // 总页数

final int offset = PageBean.countOffset(pageSize, page); // 当前页开始记录

final int length = pageSize; // 每页记录数

final int currentPage = PageBean.countCurrentPage(page);

List list = this.baseDao.queryForPage(hql, offset, length); // "一页"的记录

// 把分页信息保存到Bean中

PageBean pageBean = new PageBean();

pageBean.setPageSize(pageSize);

pageBean.setCurrentPage(currentPage);

pageBean.setAllRow(allRow);

pageBean.setTotalPage(totalPage);

pageBean.setList(list);

pageBean.init();

return pageBean;

}

在视图层action中建立分页模型

package com.fishing.action.lcq;

import com.fishing.common.bean.JianSheDWBean;

import com.fishing.common.bean.PageBean;

import com.fishing.service.lcq.JianSheDWService;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")

public class GetInfoJSDWListAction extends ActionSupport {

private int page; // 第几页

private PageBean pageBean; // 包含分布信息的bean

private JianSheDWBean jianSheDWBean;

// private PageBean page;

private JianSheDWService jianSheDWService;

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

public PageBean getPageBean() {

return pageBean;

}

public void setPageBean(PageBean pageBean) {

this.pageBean = pageBean;

}

public JianSheDWBean getJianSheDWBean() {

return jianSheDWBean;

}

public void setJianSheDWBean(JianSheDWBean jianSheDWBean) {

this.jianSheDWBean = jianSheDWBean;

}

public JianSheDWService getJianSheDWService() {

return jianSheDWService;

}

public void setJianSheDWService(JianSheDWService jianSheDWService) {

this.jianSheDWService = jianSheDWService;

}

@Override

public String execute() throws Exception {

//分页的pageBean,参数pageSize表示每页显示记录数,page为当前页

this.pageBean = jianSheDWService.queryForPage(10, page);

return SUCCESS;

}

}

在jsp中编写分页

首页 上一页

首页

href="jianguan/getJSDWInfos.action?page=" />上一页

href="jianguan/getJSDWInfos.action?page=">下一页

href="jianguan/getJSDWInfos.action?page=">尾页

下一页 尾页

页次

/

记录

上面只是代码的实现,没有说明配置文件的配置,读者根据情况配置。

希望本文所述对你有所帮助,SSH2实现数据库和界面的分页内容就给大家介绍到这里了。希望大家继续关注我们的网站!想要学习java可以继续关注本站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值