`
keepgo
  • 浏览: 15863 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个分页工具类

    博客分类:
  • ssh
阅读更多
package com.log.util;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class SplitPageHibernate extends HibernateDaoSupport{
	
	/**
	 * 使用hql语句进行分页查询
	 * @param hql 需要查询的hql语句
	 * @param offset 第一条记录索引
	 * @param pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, 
		final int offset, final int pageSize)
	{
		//通过一个HibernateCallback对象来执行查询
		List list = getHibernateTemplate()
			.executeFind(new HibernateCallback()
		{
			//实现HibernateCallback接口必须实现的方法
			public Object doInHibernate(Session session)
				throws HibernateException, SQLException
			{
				//执行Hibernate分页查询
				List result = session.createQuery(hql)
					.setFirstResult(offset)
					.setMaxResults(pageSize)
					.list();
				return result;
			}
		});
		return list;
	}

	/**
	 * 使用hql语句进行分页查询
	 * @param hql 需要查询的hql语句
	 * @param value 如果hql有一个参数需要传入,value就是传入hql语句的参数
	 * @param offset 第一条记录索引
	 * @param pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql , final Object value ,
		final int offset, final int pageSize)
	{
		//通过一个HibernateCallback对象来执行查询
		List list = getHibernateTemplate()
			.executeFind(new HibernateCallback()
		{
			//实现HibernateCallback接口必须实现的方法
			public Object doInHibernate(Session session)
				throws HibernateException, SQLException
			{
				//执行Hibernate分页查询
				List result = session.createQuery(hql)
					//为hql语句传入参数
					.setParameter(0, value) 
					.setFirstResult(offset)
					.setMaxResults(pageSize)
					.list();
				return result;
			}
		});
		return list;
	}

	/**
	 * 使用hql语句进行分页查询
	 * @param hql 需要查询的hql语句
	 * @param values 如果hql有多个个参数需要传入,values就是传入hql的参数数组
	 * @param offset 第一条记录索引
	 * @param pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, final Object[] values,
		final int offset, final int pageSize)
	{
		//通过一个HibernateCallback对象来执行查询
		List list = getHibernateTemplate()
			.executeFind(new HibernateCallback()
		{
			//实现HibernateCallback接口必须实现的方法
			public Object doInHibernate(Session session)
				throws HibernateException, SQLException
			{
				//执行Hibernate分页查询
				Query query = session.createQuery(hql);
				//为hql语句传入参数
				for (int i = 0 ; i < values.length ; i++)
				{
					query.setParameter( i, values[i]);
				}
				List result = query.setFirstResult(offset)
					.setMaxResults(pageSize)
					.list();
				return result;
			}
		});
		return list;
	}
	
	/** *//**
	   * 查询所有记录数
	   * @return 总记录数
	   */
	
	  public int getAllRowCount(String hql) {
//		 性能不好好,若数据量大会造成内存溢出
//		 return getHibernateTemplate().find(hql).size();
//		 如果数据量过大使用这个方法获得记录总数会出现内存溢出的,建议使用 
		 String hqlString="select count(*)";
		 hqlString=hqlString+" "+hql ;
		 return Integer.parseInt(getHibernateTemplate().find(hqlString).get(0).toString());
//		 return Integer.parseInt(getHibernateTemplate().find("select count(*) from table t").get(0).toString());
		
	}

}

 

分享到:
评论

相关推荐

    分页工具类分页工具类

    2. 应用程序层面:在Java中,可以自定义一个分页工具类,包含如分页参数(当前页码、每页大小)、数据获取方法(根据页码和每页大小从数据库获取数据)以及分页导航信息(如上一页、下一页、总页数等)。 3. 设计...

    java分页工具类

    page.java java分页工具类

    java分页工具类(非常实用)

    Java分页工具类是Java语言中的一种常用工具类,用于实现分页功能。下面是该工具类的详细知识点: 1. 分页工具类的作用 分页工具类的主要作用是将大量数据分页显示,以便用户更方便地浏览和操作数据。该工具类可以...

    ssm用来分页的工具类

    spring-sprifengmvc-mybatis中封装的一个分页工具类。方便以后使用,教程地址http://blog.csdn.net/chenyidong521/article/details/68094490

    常用php封装分页工具类

    本篇文章将详细解析如何封装一个PHP分页工具类,以便在不同项目中重复使用。 首先,我们需要了解分页的基本原理。分页主要涉及两个关键参数:当前页数和每页显示的条目数。通过这两个参数,我们可以计算出从数据库...

    Java实现的分页工具类

    本篇文章将详细探讨如何使用Java实现一个分页工具类,以及在实际应用中如何运用这个工具。 首先,分页的基本概念是通过指定每页显示的数据量(每页记录数,即pageSize)和当前页数(pageNumber),从数据库中获取...

    公共分页工具类

    提供一个可以公用的分页工具类,适用于各种分页

    分页工具类

    下面我们将详细探讨Java中的分页原理以及如何构建一个实用的分页工具类。 首先,了解分页的基本概念。分页是将大量的数据分成若干小部分(页)进行显示,用户可以逐页浏览,而不是一次性加载所有数据。在Java中,...

    java 分页工具类 java 分页工具类

    java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类

    分页的工具类

    分页工具类。类似谷歌 百度的分页

    js分页控件--js封装的分页控件

    自己写的一个js分页控件.已经封装,可以直接使用. 适合各种用途的分页控制. 如果界面不够美观,只需要修改css即可.

    java分页大全 包括最强大的java分页类

    "page.rar"可能包含了一个分页工具类,这类工具通常提供静态方法,接收SQL查询语句、每页大小和当前页码作为参数,然后返回处理后的SQL和分页参数。这样的设计使得在代码中调用分页功能变得简单易行,同时也易于维护...

    Java实现的分页工具类与用法示例

    1. 创建分页工具类对象:首先需要创建一个分页工具类对象,例如PageUtils2 pageUtils2 = new PageUtils2(); 2. 初始化分页工具类:在创建了分页工具类对象后,需要初始化该对象,例如pageUtils2.init(currentPage, ...

    php分页类工具类

    这是一个功能强大,并且易于扩展的分页类,该类将分页的各个元素单独分开模块化,用户可以随心所欲的拼接出自己想要的分页效果,更是添加了控制分页样式的功能,可以让你独立设置分页各元素的样式,也集成了集中已经...

    分页工具类、一些常用的分页格式、

    分页工具类、一些常用的分页格式、如常见的文字分页、论坛文字分页、论坛图片分页、

    Java jdbc分页工具类

    java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...

Global site tag (gtag.js) - Google Analytics