- 浏览: 180093 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
mport 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 MyHibernateDaoSupport extends HibernateDaoSupport {
public List findByPage(final String hql,final int offset,final int pageSize)
{
List list=this.getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
List result=session.createQuery(hql).setFirstResult(offset).setMaxResults(pageSize).list();
return result;
}
}
);
return list;
}
public List findByPage(final String hql,final String value,final int offset,final int pageSize)
{
List list=this.getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
List result=session.createQuery(hql).setParameter(0,value).setFirstResult(offset).setMaxResults(pageSize).list();
return result;
}
}
);
return list;
}
public List findByPage(final String hql,final Object[] values,final int offset,final int pageSize){
List list=this.getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query=session.createQuery(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;
}
}
2.定义要分页的实体的Dao接口
如:
public interface StudentDao {
Student get(int id);
void save(Student student);
void update(Student student);
void delete(int id);
void delete(Student student);
List<Student> findAll();
List<Student> findAllByPage(int pageNo,int pageSize);
int getStudentCount();
List<Student> findStudentByNameAndNumber(String stuName,String stuNumber);
}
3.定义实现类
主要写出两个分页中要用到的方法
public List<Student> findAllByPage(int pageNo, int pageSize) {
if(pageNo<1){
return null;
}
int offset=(pageNo-1)*pageSize;
return findByPage("from Student", offset, pageSize);
}
public int getStudentCount() {
List<Student> listStudent=this.getHibernateTemplate().find("from Student");
return listStudent.size();
}
4.定义Service接口
public interface ExamService {
int STUDENT_PAGE_SIZE=3;
int QUESTION_PAGE_SIZE=3;
int addStudent(String stuNumber,String name,String className,String humanId,String email,String address,String phone) throws Exception;
void deleteStudent(int id) throws Exception;
List<Student> listStudent(int pageNo) throws Exception;
int addQuestion(String quTitle,String quHard,String quScore,String quAnswer,String quType,String selectOption,int typeid) throws Exception;
void deleteQuestion(int id) throws Exception;
List<Question> listQuestion(int pageNo) throws Exception;
void deleteExamtype(int typeid) throws Exception;
int addExamtype(String textName,String testTime)throws Exception;
List<Examtype> getAllExamtype()throws Exception;
boolean adminLogin(String admName,String admPwd)throws Exception;
int getStudentCount()throws Exception;
int getQuestionCount()throws Exception;
int getPageCount(int count,int pageSize);
String studentLogin(String stuName,String stuNumber)throws Exception;
Question getNextQuestion(List<Integer> alreadys,int typeid)throws Exception;
Question getQuestionById(int id)throws Exception;
String getExamtypeName(int typeid)throws Exception;;
}
5.定义实现类
public int getPageCount(int count, int pageSize) {
return (count+pageSize-1)/pageSize;
}
public int getStudentCount() throws Exception {
return studentDao.getStudentCount();
}
public List<Student> listStudent(int pageNo) throws Exception {
return studentDao.findAllByPage(pageNo, STUDENT_PAGE_SIZE);
}
6.ListStudentAction.javaint studentCount=examService.getStudentCount();
ActionMessages errors=new ActionMessages();
if(studentCount<1)
{
errors.add("studentCount",new ActionMessage("studentCount.null"));
mapping.findForward("success");
}
int pageCount=examService.getPageCount(studentCount,examService.STUDENT_PAGE_SIZE);
int pageNo;
if(request.getParameter("pageNo")==null || request.getParameter("pageNo").trim().equals(""))
{
pageNo=1;
}
try {
pageNo=Integer.parseInt(request.getParameter("pageNo").trim());
} catch (Exception e) {
pageNo=1;
}
if(pageNo>pageCount){
pageNo=pageCount;
}
request.setAttribute("pageCount",pageCount);
request.setAttribute("currentPage",pageNo);
request.setAttribute("studentList", examService.listStudent(pageNo));
return mapping.findForward("success");
7.listStudent.jsp
<table cellspacing="0" cellpadding="0" border="1" width="700">
<tr>
<th>
<bean:message key="student.shenfenzheng" />
</th>
<th>
<bean:message key="student.mingzi" />
</th>
<th>
<bean:message key="student.banji" />
</th>
<th>
<bean:message key="student.xuehao" />
</th>
<th>
<bean:message key="student.youjian" />
</th>
<th>
<bean:message key="student.dianhua" />
</th>
<th>
<bean:message key="student.address" />
</th>
<th>
<bean:message key="student.isdelete" />
</th>
</tr>
<c:forEach items="${requestScope.studentList}" var="students">
<tr>
<td align="center">
${students.humanId}
</td>
<td align="center">
${students.stuName}
</td>
<td align="center">
${students.stuClassName}
</td>
<td align="center">
${students.stuNumber}
</td>
<td align="center">
${students.email}
</td>
<td align="center">
${students.phone}
</td>
<td align="center">
${students.address}
</td>
<td align="center">
<a href="deleteStudent.do?delStuid=${students.id}"
onclick='return confirm("<bean:message key="confirm.del.student"/>");' target="center"><bean:message
key="student.delete" />
</a>
</td>
</tr>
</c:forEach>
<br />
<tr>
<td colspan="7" align="center">
第${requestScope.currentPage}页 共${requestScope.pageCount}页
<a href="listStudent.do?pageNo=1">首页</a>
<logic:greaterThan value="1" name="currentPage" scope="request">
<a href="listStudent.do?pageNo=${requestScope.currentPage-1}">
</logic:greaterThan>
上一页
<logic:greaterThan value="1" name="currentPage" scope="request">
</a>
</logic:greaterThan>
<logic:lessThan value="${requestScope.pageCount}" name="currentPage"
scope="request">
<a href="listStudent.do?pageNo=${requestScope.currentPage+1}">
</logic:lessThan>
下一页
<logic:lessThan value="${requestScope.pageCount}" name="currentPage"
scope="request">
</a>
</logic:lessThan>
<a href="listStudent.do?pageNo=${requestScope.pageCount}">尾页</a>
</td>
</tr>
</table>
发表评论
-
hibernate分页原理
2008-10-30 19:59 714hibernate分页原理 Hibernate 可以实现分页查 ... -
hibernatedaosupport的使用
2008-11-06 15:50 819hibernatedaosupport的使用 一.“低 ... -
在Hibernate和PostgreSQL中使用SERIAL字段
2008-11-06 21:34 1426在Hibernate和PostgreSQL中使用SERIAL字 ... -
hibernate 乐观锁与悲观锁使用
2008-11-21 08:54 912hibernate 乐观锁与悲观锁使用 Hibernate支持 ... -
GenericHibernateDao1
2008-11-21 09:17 662GenericHibernateDao 编写Spring+Hi ... -
GenericHibernateDao2
2008-11-21 09:18 470GenericHibernateDao.java packag ... -
GenericHibernateDao3
2008-11-21 09:18 698// -------------------- HSQL -- ... -
Hibernate的数据库事务管理
2008-11-21 10:10 769Hibernate的数据库事务管理 一、 ...
相关推荐
本文将深入探讨`HibernateDaoSupport`的二次封装,以及如何通过封装来实现快速的统计、查询、修改和删除操作,同时也会涉及SQL语句中的`in`、`or`和`exists`子句的应用。 首先,`HibernateDaoSupport`提供了对`...
总结来说,Hibernate分页技术主要涉及以下几个关键点: 1. 使用`HibernateDaoSupport`或`HibernateTemplate`来简化Hibernate操作。 2. 编写自定义的扩展类,如`MyHibernateDaoSupport`,提供通用的分页查询方法。 3....
### 使用Hibernate与Spring实现分页功能 #### 一、引言 在开发Web应用程序时,分页是一项常用的功能。它可以显著提升用户体验,并减轻服务器压力。本文将详细介绍如何结合使用Hibernate和Spring框架来实现数据的...
在IT领域,尤其是在Web开发中,使用Spring、Struts和Hibernate框架进行集成是常见的实践,因为它们能够提供高效且灵活的解决...这种分页实现方式具有良好的可扩展性和复用性,是企业级Web应用开发中常见的设计模式。
SSH框架下的分页实现不仅需要在DAO层合理设计查询方法,还应充分利用Spring和Hibernate的特性,如`HibernateDaoSupport`和`HibernateCallback`,同时引入专门的`PageBean`类来管理分页状态。这种设计模式不仅提高了...
分页是指将大量的数据分成多个页面展示的技术手段。在Web应用中,用户通常只能看到当前页面的数据,而其他未显示的数据则隐藏在后台,通过翻页操作来查看更多的内容。分页可以有效地减轻服务器的压力,提高用户体验...
### SSH2分页实现详解 #### 一、背景与需求分析 在Web开发过程中,分页功能是一项重要的技术,尤其对于展示大量数据的应用而言更是必不可少。传统的分页方式往往是在单个页面中直接处理数据库查询逻辑,这种方式...
### SSH分页功能实现 #### 一、概述 SSH(Struts+Spring+Hibernate)是Java Web开发领域中一种常见的三层架构模式,其中Struts负责表现层,Spring负责业务逻辑层,而Hibernate则用于数据持久化层。在实际项目开发...
在实现分页查询的过程中,`HibernateDaoSupport`起到了关键作用。它是Spring提供的一个支持类,使得我们可以在不直接接触`SessionFactory`的情况下,便捷地使用Hibernate的相关功能。`getHibernateTemplate()....
分页是一种常见的数据展示技术,它允许用户通过翻页的形式查看大量数据,而无需一次性加载所有数据到前端页面上。这不仅能够提高用户体验,还能减轻服务器的压力。在Web应用中,分页通常涉及到后端逻辑处理(如SQL...
通过合理的分页策略和工具类,我们可以实现高效、可扩展的分页功能,同时确保系统的性能和用户体验。在实际开发中,还需要考虑错误处理、异常捕获以及对不同数据库的兼容性等问题,以确保系统的健壮性和可维护性。
在JPA和Hibernate中,可以使用`Page`或`Slice`接口(Spring Data提供)来实现分页查询,这些接口允许你指定页码和每页大小,返回结果包含当前页的数据以及总页数等信息。 2. **PageIndex.java** - 这个类可能是用于...
本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的整合。此文档作为对《使用Annotation并对DAO层封装具有分页功能的S2SH整合实例...
SSH框架整合分页——内部类回调函数 SSH(Spring、Struts2...内部类回调函数是实现分页逻辑的关键,而水印技术则是在数据导出时保护知识产权的一个手段。通过深入理解和实践这些知识点,可以提升Java Web开发的技能。
1. **HibernateDaoSupport与JdbcDaoSupport**:`HibernateDaoSupport`是Spring提供的用于简化Hibernate使用的抽象支持类,它提供了`SessionFactory`等资源的注入,简化了Hibernate的使用过程。而`JdbcDaoSupport`则...
在实际使用中,`HibernateDaoSupport`的主要作用是封装了`SessionFactory`到`HibernateTemplate`的转换过程,使DAO层的实现更加简洁。具体来说: - `setSessionFactory`方法用于接收Spring IoC容器的依赖注入,它...
在`MemberDaoImpl`类中实现了上述接口,利用Spring提供的`HibernateDaoSupport`类来实现Hibernate的操作。 ```java public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao { // 分页查询 ...
2. **短信平台二次开发** - 通过httpclient进行客户端编码,实现与短信接口的对接,同时在后台实现了分页查询、统计等功能,以满足特定业务需求。 3. **xxxxxx协同管理平台6.0** - 使用Struts、Spring和Hibernate...
在实际开发中,为了实现分页查询等功能,我们可以扩展`HibernateDaoSupport`类,增加自定义的方法。例如,可以添加`findPageByCriteria(Criteria criteria, int startIndex, int pageSize)`这样的方法,结合...
DAO层接口和实现类负责与数据库交互,实现类继承HibernateDaoSupport,以便使用Hibernate提供的便捷操作。 5. Service层设计:创建Service接口和实现类,实现业务逻辑,通过依赖注入调用DAO层方法。 6. Web层实现...