分页查询数据库方法
/**
* 分页查询方法
* @param sql,pageNO,maxResult
* @return List
*/
public List<Object> queryPageSql(String hql, int pageNo, int pageSize){
try{
Session session=HibernateUtil.getSession(); Query q=session.createQuery(hql);
//Hibernate查询起始位置
q.setFirstResult((pageNo-1)*pageSize);
//从起始位查询多少条数据
q.setMaxResults(pageSize); List<Object> list=(List<Object>)q.list(); return list; }catch(Exception e){ e.printStackTrace();
}finally{
HibernateUtil.closeSession(); } return null;
} 分页实体类PageModel,主要的分页查询方法pageQuery PACKAGE SSH.GX;
import java.util.List;
import ssh.Tb.User; public class PageModel {
private int totalRecords; //数据总条数
private int pageNo; //当前页
private int pageSize; //每页多少条
private List<Object> list;//查询到的数据集合
private int totalPageNo;//共多少页 /**
* 获取上一页
*/
public int getPreviousPageNo(){
if(pageNo>1){
return pageNo-1;
}else{
return 1;
} } /**
* 获取下一页
*/
public int getNextPageNo(){
if(pageNo>=getTotalPageNo()){
//如果总页数为0这返回1,否则返回总页数
return getTotalPageNo()==0?1:getTotalPageNo();
}else{
return pageNo+1;
}
} /**
* 获取分页集合函数
* @param pageModel
* @param hql
* @param pageTab
* @return PageModel
* @see pageTab控制查询的1:下一页;2:上一页;3:第一页;4:最后一页
*/ public PageModel pageQuery(PageModel pageModel,String hql,int pageTab){
HibernateDB hdb=new HibernateDB();
//查询数据的总条数并赋值给totalRecords变量
List<Object> lists=(List<Object>)hdb.querySql(hql);
totalRecords=lists.size(); //给没有查询条数赋值默认值
if(pageModel.getPageSize()==0){pageModel.setPageSize(5);} //执行获取下一页
if(pageTab==1){
//执行获取下一页
if(pageModel.getPageNo()==0){
pageModel.setPageNo(1);
}else{
pageModel.setPageNo(pageModel.getNextPageNo());
} }else if(pageTab==2){
//执行获取上一页
if(pageModel.getPageNo()==0)
pageModel.setPageNo(1);
else
pageModel.setPageNo(pageModel.getPreviousPageNo()); }else if (pageTab==3){
//获取第一页
pageModel.pageNo=1;
}else{
//获取最后一页
pageModel.pageNo=pageModel.getTotalPageNo();
} //查询分页数据
list=(List<Object>)hdb.queryPageSql(hql,pageModel.getPageNo(),pageModel.getPageSize()); return pageModel;
} public int getTotalRecords() {
return totalRecords;
} public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
} public int getPageNo() {
return pageNo;
} public void setPageNo(int pageNo) {
this.pageNo = pageNo;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public int getTotalPageNo() {
return totalPageNo=(totalRecords + pageSize -1)/pageSize;
} public void setTotalPageNo(int totalPageNo) {
this.totalPageNo = totalPageNo;
} public List<Object> getList() {
return list;
} public void setList(List<Object> list) {
this.list = list;
} } Action类查询,必须使用spring配置文件将PageModel类注入到Action中。
/**
* 分页查询下一页
* @return
*/
public String nextQuery(){ pageModel.pageQuery(pageModel, "from User", 1); return "query";
} /**
* 分页查询上一页
* @return
*/
public String backQuery(){
pageModel.pageQuery(pageModel, "from User", 2);
return "query";
}
/**
* 分页查询第一页
* @return
*/
public String firstQuery(){
pageModel.pageQuery(pageModel, "from User", 3);
return "query";
}
/**
* 分页查询最后一页
* @return
*/
public String endQuery(){
pageModel.pageQuery(pageModel, "from User",4);
return "query";
} Struts.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 配置Struts支持动态Action, 必须存在 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- strict-method-invocation在2.5版本,为了限制DMI,
默认启用了严格的方法访问,不想启用要改为false,
如果启用严格访问模式,无法实现动态Action -->
<package name="mypackage" extends="struts-default" strict-method-invocation="false">
<action name="user*" class="ssh.action.UserAction" method="{1}">
<result name="success">
/jsp/mian.jsp</result>
<result name="login">
index.jsp
</result>
<result name="saveerror">/jsp/save.jsp</result>
<result name="query">/jsp/query.jsp</result>
</action> </package>
</struts> query.jsp页面显示 <table>
<s:iterator value="pageModel.list" id="u" >
<tr>
<td><s:property value="#u.id"/></td>
<td><s:property value="#u.username"/></td>
</tr>
</s:iterator>
<tr>
<td><s:a href="userfirstQuery">首页</s:a>
<s:a href="userbackQuery?pageModel.pageNo=%{pageModel.pageNo}">上一页</s:a>
<s:property value="pageModel.pageNo" />/<s:property value="pageModel.totalPageNo"/>
<s:a href="usernextQuery?pageModel.pageNo=%{pageModel.pageNo}">下一页</s:a>
<s:a href="userendQuery">末页</s:a></td>
<td></td>
</tr>
</table>

Hibernate和Struts分页查询的更多相关文章

  1. Java_Web三大框架之Hibernate+jsp+HQL分页查询

    分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...

  2. 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集

    使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集 - bto310 - ITeye博客 https://bto310.iteye.com/blog/1 ...

  3. JPA分页查询与条件分页查询

    情有独钟的JPA 平时在写一些小项目时,比较喜欢引用 Spring Data Jpa,其实还是图他写代码快~在日常的开发工作中,分页列表查询基本是随处可见,下面一起看一下如何使用 jpa 进行多条件查 ...

  4. 用Hibernate和Struts2+jsp实现分页查询、修改删除

    1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...

  5. hibernate和struts实现分页

    仓促把功能进行实现一下  类与类之间也没有进行MVC式分开  重要的是逻辑 记录一下 希望其中的些许代码逻辑对你有用 TUserDaoImpl---dao层的实现 package com.pers.h ...

  6. 【java】spring-data-jpa 集成hibernate实现多条件分页查询

    初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...

  7. [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Hibernate分页查询小结

    通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询: 1.QBE(Qurey By Example)检索方式 QBE 是最简单的,但是功能也是最弱的,QBE的功能不是特别强大, ...

  9. Hibernate第十篇【Hibernate查询详解、分页查询】

    前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式-.到目前为止,我们都是使用一些简单的主键查询阿-使用HQL查询所有的数据-.本博文主要讲解Hibernate的查询操 ...

随机推荐

  1. Java设计模式透析之 —— 策略(Strategy)

    今天你的leader兴致冲冲地找到你,希望你能够帮他一个小忙.他如今急着要去开会.要帮什么忙呢?你非常好奇. 他对你说.当前你们项目的数据库中有一张用户信息表.里面存放了非常用户的数据.如今须要完毕一 ...

  2. java基础之概谈xml文件解析

    XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细 ...

  3. simple_pool对象池——优化&lt;二&gt;

    本文章由cartzhang编写.转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/55051570 作者:car ...

  4. JSP指令用来设置整个JSP页面相关的属性

    JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言. 语法格式如下: <%@ directive attribute="value" %&g ...

  5. umbraco v7.6.4 surface controller not found 大深坑!

    注意在修改后台地址过程中对于web.config里的umbracoPath 如果你改成了~/admin,surface controller的路由就变成了 /admin/surface/{contro ...

  6. yum lock 解决方法

    方法一: # ps aux | grep yum # kill -9 pid 方法二:可以通过执行rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了 解释: [ ...

  7. PHPstorm如何导入字体主题

    概要: 今天在安装phpstorm的时候发现导入字体主题时,出了问题,这个问题总是困惑我,并且曾经遇到过,没记录下来,所以想着这次记录下来吧.网上搜的稀里糊涂的,还是自己做个summary! 前提: ...

  8. 划分Linux分区

    / Swap 这二个分区是必须有的. /usr linux系统都在 /usr 中 /home  用户信息都在 /home 下 /var 保持所有服务器的登录文件,且Web默认的路径在 /var中 可以 ...

  9. lua例子getglobal()

    #include <stdio.h> #define MAX_COLOR 255 extern "C" { #include "lua-5.2.2/src/l ...

  10. Elipse 导入项目出现问题

    1.通常出现jsp页面报错 那是因为server没有绑定 build path ->apache-tomcat ->edit 2.target runtime apache tomcat ...