Hibernate实现分页的工具类
来源:互联网 发布:python win32api 安装 编辑:程序博客网 时间:2024/05/16 01:37
1、 分析查询方式
a) HQL语句查询
面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作
b) Criteria对象查询
Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式。
2、 创建工具类ListPageUtil并创建两个静态方法,
a) Integer getSize(Class clazz):用来返回指定对象对应的表的总记录数。
b) List ListPage(Integer pageSize,IntegernowPage,Class clazz) 指定每页大小和当前页,并传入指定的类,返回当前显示的所有记录数并用List集合返回。
c) 把构造函数访问权限设置成私有,单例类,不能将其用new实例化,只能调用其中静态方法。
3、 实现方法
a) List ListPage(IntegerpageSize,Integer nowPage,Class clazz)
i. HQL方式代码实现如下:
public static List listPage(Integer pageSize,Integer nowPage,Classclazz){
/*使用HQL查询实现分页*/
Session session=null;
//声明返回值
List entities=null;
/*定义HQL查询语句(后面为指定获取它的类名)*/
String hql="from "+clazz.getName();
/*计算出从哪一条记录开始查询*/
Integer nowCount=pageSize*(nowPage-1);
try{
/*获取session对象*/
session=HibernateUtil.getSession();
/*根据hql语句获取到Query对象*/
Query query=session.createQuery(hql);
/*设置从第几条记录开始查询*/
query.setFirstResult(nowCount);
/*设置一共查询出多少条*/
query.setMaxResults(pageSize);
/*指定并返回集合*/
entities=query.list();
return entities;
}finally{
if(session!=null){
//释放资源
session.close();
}
}
}
ii. Criteria对象查询代码实现如下:
public static List listPage(Integer pageSize,Integer nowPage,Classclazz){
/*利用Criteria对象查询实现分页*/
Session session=null;
//声明返回值
List entities=null;
try{
session=HibernateUtil.getSession();
//利用criteria对象查询出指定的对象
Criteria cri=session.createCriteria(clazz);
cri.setFirstResult(pageSize*(nowPage-1));
cri.setMaxResults(pageSize);
entities=cri.list();
return entities;
}finally{
if(session!=null){
//释放资源
session.close();
}
}
b) List getSize(Class clazz)
/*查询指定对象的总记录数*/
public static Integer getSize(Class clazz){
Session session=null;
//声明返回值
Integer size=0;
/*构造HQL查询语句*/
String hql="selectcount(*) from "+clazz.getName();
try{
/*获取session对象*/
session=HibernateUtil.getSession();
/*根据hql语句得到query对象*/
Query query=session.createQuery(hql);
/*将结果先转换成字符串再并解析成整型类型*/
size=Integer.parseInt(query.uniqueResult().toString());
/*返回结果*/
return size;
}finally{
if(session!=null){
//释放资源
session.close();
}
}
}
分页收获:开始显示的时候用的HQL查询,接受的参数是Class类型,但是没有办法构造出对应的HQL语句,因为前面带有包的前缀,如 java.lang.String。在Criteria对象查询不会遇到这种情况,因为它是更加面向对象的查询方式。
在接受到Class类的对象时候,只要用getName方法则可以获取到名字,构造的HQL语句带有前缀的包名也不会影响结果,比如构造出的HQL查询语句是 from cn.csdn.domain.User 。也可以解析并返回正确的结果。
本工具类已在JSP页面中测试过,可以正常使用,没有错误。
- Hibernate实现分页的工具类
- hibernate分页工具类
- hibernate分页的实现
- struts2+hibernate+工具类实现真分页技术
- Android分页工具类的实现
- Struts+Hibernate分页的实现
- hibernate中分页的实现
- struts+hibernate 分页的实现
- Hibernate分页查询的实现
- hibernate分页查询的实现
- Hibernate分页查询的实现
- 分页的工具类
- Struts+Hibernate开发实践 分页的实现
- Struts+Hibernate开发实践 分页的实现
- hibernate+spring的一个简单分页实现
- 实现Hibernate 分页的一段代码
- Hibernate实现分页查询的原理分析
- Struts+Hibernate开发实践 分页的实现
- Jetty的配置、部署与API使用——(3)Linux下利用Jetty API运行一个Jetty服务器
- kernel 点滴(添加中)
- 工作中常用插件学习网站
- c语言中float为什么不能直接用==与0比较
- 回头看进程的创建
- Hibernate实现分页的工具类
- 配置Privoxy的访问控制
- How to do system testing?
- bravo:eclipse web开发插件
- WinForm 应用程序的打包和部署_简单版(图文)
- 工作常用英文单词
- 软件设计师考试大纲
- html 调用js脚本的方式。
- 在Android 2.2上设置程序默认安装SD卡