1、创建SessionFactory,为了减轻服务器负担,保证一个应用中仅生成一个SessionFactory即可.
package dao;
import org.hibernate.cfg.*;
import org.hibernate.*;
public class MySessionFactory ...{
private static Configuration config=null;
private static SessionFactory sf=null;
private MySessionFactory()...{
config=new Configuration().configure();
sf=config.buildSessionFactory();
}
public static SessionFactory getSessionFactory()...{
if(sf==null)...{
new MySessionFactory();
}
return sf;
}
}
2、实现分页过程
方法getTotalPage()得到总页数, getObject()将所查询的数据封装到list里!
package dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class pageList ...{
// 分页实现代码:
// 得到总页数 pagesize为一个页面显示的记录数
public int getTotalPage(String hql, int pagesize) ...{
SessionFactory sf = MySessionFactory.getSessionFactory();
Session session = sf.openSession();
Transaction ts = session.beginTransaction();
Query query = session.createQuery(hql);
List list = query.list();
int totalrs = list.size();
int totalpage = 0;
if (totalrs % pagesize > 0) ...{
totalpage = totalrs / pagesize + 1;
} else ...{
totalpage = totalrs / pagesize;
}
ts.commit();
session.close();
return totalpage;
}
// 分页list
public List getObject(String hql, int page, int pagesize) ...{
if (page < 1)page = 1;
SessionFactory sf = MySessionFactory.getSessionFactory();
Session session = sf.openSession();
Transaction ts = session.beginTransaction();
Query query = session.createQuery(hql);
query.setFirstResult(page * pagesize - pagesize);
query.setMaxResults(pagesize);
List list = query.list();
ts.commit();
// session.close();
return list;
}
// 分页代码完
}
代码中page为请求的页面,pagesize为一个页面显示的记录数。
3、应用实例:
<%...@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%...@ page import="dao.*,po.*,java.util.*"%>
<%...@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean"%>
<%...@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%...
String nowpage = request.getParameter("page");
//如果请求业面为空或第一次访问时,页面设为1
if (nowpage == null || nowpage.equals(""))nowpage = "1";
//将nowpage转为整型
int mypage = Integer.parseInt(nowpage);
if (mypage <= 0)mypage = 1;
//页面记录数设为10
int pagesize = 10;
String hql = "from ExamStudent";
pageList pl = new pageList();
int totalpage = pl.getTotalPage(hql, pagesize);
//当请求页面大于总页数,则将当前请求页面设为最大页数
if (mypage > totalpage)mypage = totalpage;
ArrayList list = (ArrayList) pl.getObject(hql, mypage,pagesize);
Iterator it = list.iterator();
%>
<html>
<head>
<title>JSP for AddStudentForm form</title>
</head>
<body>
<table border="1">
<tr>
<td>学号</td>
<td>姓名</td>
<td>性别</td>
<td>电话</td>
<td colspan="2">操作</td>
</tr>
<%...
while (it.hasNext()) {
ExamStudent es = (ExamStudent) it.next();
%>
<tr>
<td><%=es.getStudentClassid()%></td>
<td><%=es.getStudentName()%></td>
<td><%=es.getStudentSex()%></td>
<td><%=es.getStudentTel()%></td>
<td><a href="updateStudent.jsp?id=<%=es.getStudentId()%>">修改</a></td>
<td><a href="/exam/deleteStudent?id=<%=es.getStudentId()%>">删除</a></td>
</tr>
<%...
}
list.clear();
%>
<tr>
<td colspan="6"><a href="addStudent.jsp?page=1">首页</a>||<a
href="addStudent.jsp?page=<%=mypage-1%>">上一页</a>||<a
href="addStudent.jsp?page=<%=mypage+1%>">下一页</a>||<a
href="addStudent.jsp?page=<%=totalpage%>">末页</a></td>
</tr>
</table>
</body>
</html>
页面中page ,nowpage,mypage均为当前请求页面,只是数据类型不同。
//完 第一次用hibernate做分页,如有错误或不好的地方请多多指教!!
分享到:
相关推荐
4. **分页显示**:为了实现分页,开发者通常会使用HQL(Hibernate Query Language)或者SQL查询语句配合LIMIT和OFFSET关键字来获取指定页码的数据。在Service或DAO层,会有一个方法接收当前页数和每页记录数,计算出...
`KindEntityDaoHibernate`类实现了`KindEntityDao`接口,并使用Hibernate作为底层的数据访问工具。在这个类中,我们可以通过编写Hibernate HQL或SQL查询语句来实现分页查询。 4. **Struts2 Action** 在Action类中...
本篇将深入探讨Hibernate中的分页查询功能以及它如何处理数据库连接,帮助你更有效地管理大数据量的查询操作。 首先,我们来看一下什么是分页查询。在Web应用中,当用户需要浏览大量数据时,一次性加载所有数据不仅...
本教程将详细讲解如何使用Hibernate实现分页功能,这对于处理大量数据的Web应用来说至关重要,因为它能够有效地减少数据库负载,提高用户体验。 一、Hibernate分页基础 1. Hibernate的Query和Criteria API都提供了...
在Java开发中,通常会结合JDBC或ORM框架如Hibernate、MyBatis等实现分页。例如,使用JDBC时,可以在PreparedStatement中设置参数来动态传入分页条件: ```java String sql = "SELECT * FROM your_table ORDER BY ...
它允许开发者用Java对象来表示数据库中的记录,而无需关心底层SQL的实现。在Java项目中,Hibernate通过jar包的形式提供服务,使得开发人员能够快速集成并进行数据库操作。 一、Hibernate概览 Hibernate是由JBoss...
总之,为了实现Hibernate对多数据库的支持,需要精心设计和配置,以确保代码的可移植性,同时兼顾性能和数据一致性。以上各点提供了实现这一目标的基础,但实际项目中可能还需要解决更多特定于数据库的问题。通过...
本教程将介绍如何使用Hibernate框架结合Java、Servlet和JSP技术实现下拉式分页功能。Hibernate作为一款强大的ORM(对象关系映射)工具,能够简化数据库操作,使我们无需直接编写SQL语句,即可实现数据的增删改查。 ...
**基于Hibernate的简单数据库实现** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务,使得开发人员可以避免编写大量的SQL语句,从而更加专注于业务逻辑。通过Hibernate...
【hibernate动态数据库进化版】是一个关于Java持久层框架Hibernate深入学习的主题,它主要探讨了如何在实际项目中让Hibernate更加灵活地适应不同的数据库环境,实现动态的SQL生成和执行。这一进化的版本旨在提高开发...
本项目是基于`jsp`(Java Server Pages)和`Hibernate`框架实现的分页功能,通过Java代码来详细展示了如何在Web应用中高效地实现这一功能。 `jsp`是Java的一种动态网页技术,允许开发者在HTML中嵌入Java代码,以...
在IT行业中,数据库管理和持久化框架的使用是至关重要的,特别是对于Java开发者而言,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。本文将深入探讨如何修改AHibernate(可能是...
Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使得开发者可以更专注于业务逻辑而不是底层SQL的编写。 【描述】中的"程序代码"提示我们将深入探讨具体的编程实现。博文...
这样的分页实现保证了数据的高效加载和用户的流畅体验,同时充分利用了Struts的控制层和Hibernate的数据访问层能力,降低了开发复杂度。在实际项目中,还可以考虑优化如缓存、懒加载等策略来进一步提高性能。
根据java语言对达梦DM数据库的连接和操作,包括建表、新增、修改、删除、查询以及复杂查询和分页查询等完整代码,附送Dm7Dictionary的驱动包,此驱动包兼容jdk1.7和jdk1.8本人亲测完美兼容
在使用Hibernate连接金仓数据库时,需要特定的驱动和其他相关jar包来支持这种连接。下面我们将详细介绍这些jar包的作用以及如何配置它们。 首先,"hibernate连接金仓数据库所需jar包集合lib.7z"这个压缩包中包含了...
在本文中,我们将深入探讨如何使用Spring Boot与Hibernate框架实现简单的分页功能。Spring Boot以其简洁的配置和快速的应用开发而受到广泛欢迎,而Hibernate作为Java领域中的一个强大的ORM(对象关系映射)工具,...
在本例中,`hibernate自动生成数据库文件.exe`可能是Hibernate Tools的一个实现,用于将Java类转换为数据库脚本或直接创建数据库。 2. **逆向工程(Reverse Engineering)**:逆向工程是Hibernate Tools中的一个...
2. **在DAO层实现分页查询**:使用Hibernate的Criteria、HQL或者SQL配合分页参数(如页码和每页大小)来执行分页查询。 3. **在Service层处理分页逻辑**:Service层根据业务需求,调用DAO层的分页查询方法,并返回...