基于Hibernate的分页查询

分页查询数据上基本上是我们做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页面的相关代码:

<% if (pages != 1) {//当页码不是出于第一页的时候 %> 上一页 <% } else {//当页码已经出于第一页,不做页面的计算,且页码调到最后一页 %> 上一页 <% } %>

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

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

我们来见证一下效果:

基于Hibernate的分页查询_第1张图片

基于Hibernate的分页查询_第2张图片

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

你可能感兴趣的:(javaWeb项目笔记)