Hibernate和Struts分页查询
分页查询数据库方法
/**
* 分页查询方法
* @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分页查询的更多相关文章
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集
使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集 - bto310 - ITeye博客 https://bto310.iteye.com/blog/1 ...
- JPA分页查询与条件分页查询
情有独钟的JPA 平时在写一些小项目时,比较喜欢引用 Spring Data Jpa,其实还是图他写代码快~在日常的开发工作中,分页列表查询基本是随处可见,下面一起看一下如何使用 jpa 进行多条件查 ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- hibernate和struts实现分页
仓促把功能进行实现一下 类与类之间也没有进行MVC式分开 重要的是逻辑 记录一下 希望其中的些许代码逻辑对你有用 TUserDaoImpl---dao层的实现 package com.pers.h ...
- 【java】spring-data-jpa 集成hibernate实现多条件分页查询
初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...
- [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate分页查询小结
通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询: 1.QBE(Qurey By Example)检索方式 QBE 是最简单的,但是功能也是最弱的,QBE的功能不是特别强大, ...
- Hibernate第十篇【Hibernate查询详解、分页查询】
前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式-.到目前为止,我们都是使用一些简单的主键查询阿-使用HQL查询所有的数据-.本博文主要讲解Hibernate的查询操 ...
随机推荐
- 解析spark RDD
RDD是spark抽象的基石,可以说整个spark编程就是对RDD进行的操作 RDD是弹性的分布式数据集,它是只读的,可分区的,这个数据集的全部或者部分数据可以缓存在内存中,在多次计算间重用.所谓 ...
- bzoj3174【TJOI2013】解救小矮人
3174: [Tjoi2013]解救小矮人 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 573 Solved: 293 [Submit][Stat ...
- 华为nova3发布,将支持华为AI旅行助手
华为nova3于7月18日18:00在深圳大运中心体育馆举行华为nova 3的发布会,从本次华为nova3选择的代言人-易烊千玺,不难看出新机依然延续nova系列的年轻属性,主打 “高颜值 爱自 ...
- centos 7 安装 mail
yum install -y sendmail 将下面内容粘贴到/etc/mail.rc中 set ssl-verify=ignore set nss-config-dir=/root/.certs ...
- 怎样解决mysql最后一步提示未响应
1.在开始菜单下,点击运行,输入regedit,进入注册表编辑器目录下 2.在注册表编辑器里system下找到controlset001,controlset002,currentcontrolset ...
- diamond源码阅读-目录监控
PathNode(Path)StandardWatchEventKind(WatchEvent)Watchable(WatchKey WatchService WatchEvent)WatchKey( ...
- hihoCoder #1388 : Periodic Signal
NTT (long long 版) #include <algorithm> #include <cstring> #include <string.h> #inc ...
- liunx 下安装 php_screw 扩展 以及报错处理
php_screw 是一个 php 源代码加密扩展.首先来看一下 php_screw 在liunx下是如何安装的 首先 去源完整下载 安装包,现在的最新版是 1.5,我们就用1.5 来做个实例 如果有 ...
- unity视频教程
英雄联盟教程 http://pan.baidu.com/s/1i3rkMS9 密码:bv6r https://pan.baidu.com/share/link?shareid=258985 ...
- web安全之SQL注入---第四章 如何进行SQL注入攻击
第四章 如何进行SQL注入攻击1.数字注入2.字符串注入 '# '--