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());
}
}
分享到:
相关推荐
分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类分页工具类
page.java java分页工具类
spring-sprifengmvc-mybatis中封装的一个分页工具类。方便以后使用,教程地址http://blog.csdn.net/chenyidong521/article/details/68094490
提供一个可以公用的分页工具类,适用于各种分页
java分页工具类 java分页工具类 java分页工具类 java分页工具类 java分页工具类 java分页工具类
分页工具类。类似谷歌 百度的分页
自己写的一个js分页控件.已经封装,可以直接使用. 适合各种用途的分页控制. 如果界面不够美观,只需要修改css即可.
这是一个功能强大,并且易于扩展的分页类,该类将分页的各个元素单独分开模块化,用户可以随心所欲的拼接出自己想要的分页效果,更是添加了控制分页样式的功能,可以让你独立设置分页各元素的样式,也集成了集中已经...
分页工具类、一些常用的分页格式、如常见的文字分页、论坛文字分页、论坛图片分页、
java实现分页的工具类!对首页、上一页、下一页、尾页包括选择某一页可以轻松实现!
java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...
分页工具类 CSS
对分页进行了封装,PageUtil.java的分页工具类,自己写了一个dome。
java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现
一个简单的分页工具类,包括模糊查询,上一页和下一页,
Pager(通过的分页工具类)
通用分页工具类PageInfo.java