基于Hibernate的分页查询

本文详细介绍了基于Hibernate的分页查询实现方法,包括后台数据查询逻辑及页面参数传递,展示了如何通过设置每页显示数量和当前页数进行数据分段读取。

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

分页查询数据上基本上是我们做web网站等项目必须要做功能,基于Hibernate查询的分页查询也是如此。

那么,基于Hibernate的分页查询到底是如何实现的呢?一下我将一一向大家展示,如有任何疑问,欢迎留言。
后台数据查询:

	// 分页显示所有的数据
	public List pageCountryList(int pageNum, int pageSize) {
		// pageSize:每页显示多少条记录
		// pageNem:显示第几页
		Session sess = HibernateSessionFactory.getSession();
		Criteria ctr = sess.createCriteria(TbCountriesName.class);//里面的参数就是数据表映射后对应的实体类(我映射后的实体类叫做TBCountriesName.class)
		
		int firstRow = (pageNum - 1) * pageSize;// 获取第一行
		ctr.setFirstResult(firstRow);
		ctr.setMaxResults(pageSize);// 每页显示的行数
		List list = ctr.list();
		return list;
	}

代码说明: 

分页功能肯定会涉及到当前的显示页以及每页要显示多少条数据。

其中的 pageNum就是我们想每页显示多少条数据;pageSize就是显示第几页的数据。

我们再来写一个方法获取数据库里面的记录的总数(后面会用到):

	public List getAllCountiesName() {//得到所有的数据
		Session sess = HibernateSessionFactory.getSession();
		List list = sess.createCriteria(TbCountriesName.class).list();
		//HibernateSessionFactory.closeSession();
		return list;
	}

以上就是后台与查询相关的代码,我们再来看看如何传递相关的参数以及调用这个方法。

页面代码(与分页查询相关的部分):

    TbCountriesNameBean bean = new TbCountriesNameBean();//实例化
	List list = bean.getAllCountiesName(); 
 
    int pagesSize = 3;//每页显示三条数据

    String strPages = request.getParameter("pages");//接受提交的页码

	if (strPages == null || strPages == "") {
		strPages = "1";//初始化传入的数据,获得第一页数据(当用户没有提交页码的时候,默认为第一页)
	}

	// pages:显示第几页
	int pages = Integer.parseInt(strPages);

	int num = list.size() % pagesSize;//用总数除以定义的每页显示的数据
	int q;//定义一个参数,用作页面的计算
	if (num != 0) {
		q = list.size() / pagesSize + 1;//如果页数不能被总数整除,就加一
	} else {
		q = list.size() / pagesSize;
	}
	List list1 = bean.pageCountryList(pages, pagesSize);

以上就是各种参数的初始化以及方法的调用,我们再来看看jsp页面的相关代码:

<div class="n-p-box clearfix">
	<div class="prv">
    	<%
	    	if (pages != 1) {//当页码不是出于第一页的时候
		%>
		<a href="countryList.jsp?pages=<%=(pages - 1)%>">上一页</a>
		<%
			} else {//当页码已经出于第一页,不做页面的计算,且页码调到最后一页
		%>
		<a href="countryList.jsp?pages=<%=q%>">上一页</a>
		<%
			}
		%>
	</div>
	<div class="next" style="text-align: right;">
	<%
			if (pages != q) {
	%>
		<a href="countryList.jsp?pages=<%=(pages + 1)%>">下一页</a>
		<%
			} else {//当页码已经出于最后一页,再点击下一页,就会到第一页
		%>
		<a href="countryList.jsp?pages=<%=1%>">下一页</a>
		<%
			}
		%>
	</div>
</div>

以上就是基于Hibernate的分页查询了。是不是非常简单呀?你会了吗?

其实正确地来说,应该是基于Hibernate查询的分页显示,因为上面的代码是把数据库里面的数据查询出来保存起来,再分段读取。

我们来见证一下效果:

你get了吗?赶紧去试试吧,欢迎留言哦。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值