struts2.0+hibernate+oracle的分页详解
来源:互联网 发布:什么数据比金十数据好 编辑:程序博客网 时间:2024/06/06 02:45
struts2.0 + hibernate + oracle 分页问题
最近弄了下 struts2.0 + hibernate + oracle 分页问题的
从网上搜了些资料。总觉得不是很合心意。自己做了例子。
ueser.sql
Sql代码
DROP TABLE "SCOTT"."T_USER" cascade constraints;
DROP SEQUENCE "SCOTT"."Q_USER";
CREATE TABLE T_USER
(
ID CHAR(4 BYTE) NOT NULL ENABLE,
USERNAME VARCHAR2(20 BYTE) NOT NULL ENABLE,
PASSWORD VARCHAR2(20 BYTE) NOT NULL ENABLE,
CONSTRAINT T_USER_PK PRIMARY KEY (ID) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE SYSTEM ;
CREATE SEQUENCE "SCOTT"."Q_USER" MINVALUE 1 MAXVALUE 9999 INCREMENT BY 1 START WITH 121 CACHE 20 NOORDER NOCYCLE ;
Insert into T_USER (ID,USERNAME,PASSWORD) values (Q_USER.nextval,'222','222');
DROP TABLE "SCOTT"."T_USER" cascade constraints;
DROP SEQUENCE "SCOTT"."Q_USER";
HibernateUtil.java
Java代码
package hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Hibernate的工具类.
* @author AmigoXie
*/
public class HibernateUtil {
private static SessionFactory sessionFactory;
/** 持有一个单态的Session实例. */
private static final ThreadLocal threadLocal = new ThreadLocal();
/** 持有一个单态的configuration实例. */
private static final Configuration cfg = new Configuration();
private static String CONFIG_FILE_LOCATION = "hibernate/hibernate.cfg.xml";
static {
try {
sessionFactory = new Configuration().configure(CONFIG_FILE_LOCATION)
.buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* 获得当前的Session实例.
* @return Session
* @throws HibernateException
*/
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
//if (session == null) {
if(session==null||session.isOpen()==false){
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%"
+ e.getMessage());
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
}
User.java
Java代码
package hibernate;
public class User {
private String id ;
private String userName;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
hibernate.cfg.xml
Xml代码
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:JIM</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="show_sql">true</property>
<property name="format_sql">false</property>
<!-- mapping files -->
<mapping resource="hibernate/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
user.hbm.xml
Java代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hibernate">
<class name="User" table="T_USER">
<id name="id" column="ID" type="string">
<generator class="assigned"/>
</id>
<property name="userName" column="USERNAME" type="string" not-null="true" />
<property name="password" column="PASSWORD" type="string" not-null="true" />
</class>
</hibernate-mapping>
IuserDao.java接口
Java代码
package page;
import hibernate.User;
import java.util.List;
public interface IuserDao {
public List<User> displayUser(int offset,int max);
public int count();
}
UserDao.java
Java代码
package page;
import hibernate.HibernateUtil;
import hibernate.User;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class UserDao implements IuserDao {
@Override
public List<User> displayUser(int offset, int max) {
// TODO Auto-generated method stub
//PagerModel<User> pm = null;
List<User> list =null;
String hsql = "from User ";
Session session = HibernateUtil.currentSession();
Transaction ts = null;
try {
ts = session.beginTransaction();
Query query = session.createQuery(hsql);
query.setFirstResult(offset);
query.setMaxResults(max);
list = query.list();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (ts != null) {
ts.rollback();
}
}finally{
session.close();
}
return list;
}
@Override
public int count() {
// TODO Auto-generated method stub
int i = 0 ;
Session session = HibernateUtil.currentSession();
Transaction ts = null;
try {
ts = session.beginTransaction();
Query query = session.createQuery("select count(*) from User");
i = (Integer) query.uniqueResult();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (ts != null) {
ts.rollback();
}
}finally{
session.close();
}
return i;
}
}
pageAction.java
Java代码
package page;
import java.util.List;
import hibernate.User;
import com.opensymphony.xwork2.ActionSupport;
public class PageAction extends ActionSupport {
int i=1;//中间变量
private int k;//储存最大页面数
private int pageNow=1; //页码数,初始为1
private int pageSize = 5 ; //页面行数
private int intRowCount = 0;//总行数
private int intPageCount = 1;//总页数
// private Admin admin;
// private List<Admin> Adminss;
private User user;
private List<User> users;
private int id;
private int aid;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getIntRowCount() {
return intRowCount;
}
public void setIntRowCount(int intRowCount) {
this.intRowCount = intRowCount;
}
public int getIntPageCount() {
return intPageCount;
}
public void setIntPageCount(int intPageCount) {
this.intPageCount = intPageCount;
}
public int getK() {
return k;
}
public void setK(int k) {
this.k = k;
}
@SuppressWarnings("unchecked")
@Override
//显示列表
public String execute() throws Exception {
IuserDao npage=new UserDao();
intRowCount=npage.count();
k=(intRowCount + pageSize - 1) / pageSize;
intPageCount = (intRowCount + pageSize - 1) / pageSize;//计算出总页数
if(pageNow<1){
pageNow=1;
}
if(pageNow > intPageCount)
pageNow=intPageCount;
i = (pageNow -1)*pageSize;
IuserDao nlist=new UserDao();
if(null!=nlist.displayUser(i,pageSize)){
users = nlist.displayUser(i,pageSize);
return SUCCESS;
}else{
return "failure";
}
}
}
struts.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="users" extends="struts-default">
<action name="list" class="page.PageAction" >
<result>/listUsers.jsp</result>
<result name="failure">/Showfailure.jsp</result>
</action>
</package>
</struts>
web.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>bornToPage</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
listUser.jsp
Java代码
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<center><table border = "1">
<tr>
<td>id</td>
<td>name</td>
<td>pass</td>
</tr>
<s:iterator value="users" id = "user">
<tr>
<td><s:property value = "#user.id"/></td>
<td><s:property value = "#user.userName"/></td>
<td><s:property value = "#user.password"/></td>
</tr>
</s:iterator>
</table>
</center>
<center>
共<s:property value="intRowCount"/>记录
第<s:property value="pageNow"/>页
<s:url id="url_pre" value="list.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<s:url id="url_next" value="list.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<s:if test="intPageCount!=null">
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" ><s:property value="intPageCount"/></s:param>
<s:iterator>
<s:url id="url" value="list.action">
<s:param name="pageNow" ><s:property /></s:param>
</s:url>
<s:a href="%{url}"><s:property /></s:a>
</s:iterator>
</s:bean>
</s:if>
<s:if test="pageNow==1">
<s:a href="%{url_pre}">最前一页</s:a>
</s:if>
<s:else>
<s:a href="%{url_pre}">上一页</s:a>
</s:else>
<s:if test="pageNow==k">
<s:a href="%{url_next}">最后一页</s:a>
</s:if>
<s:else>
<s:a href="%{url_next}">下一页</s:a>
</s:else>
</center>
</body>
</html>
直接jsp运行后 不显示分页 需在地址栏里写上http://localhost:8080/bornToPage/list.action才能正常显示(提前子在数据库多插入几条数据)
- struts2.0+hibernate+oracle的分页详解
- Struts2.0 +Hibernate 分页
- mysql oracle Hibernate 的分页
- 11级_Java_曹建波 04.07 jQuery easyUI +struts2+hibernate+oracle 实现 admin用户的分页操作
- hibernate+struts2的详细分页代码
- struts2+spring+hibernate分页
- struts2+hibernate分页
- struts2+Hibernate分页
- Struts2+Hibernate分页查询
- HIbernate+struts2分页案例
- Struts2+HIBERNATE实现分页
- Struts2+HIBERNATE实现分页
- struts2+hibernate+spring 分页
- hibernate struts2分页显示
- Hibernate+Struts2 分页实现
- Struts2,oracle实现GOOGLE的分页样式
- mybatis及hibernate下的MySQL和oracle数据库分页详解
- 基于Struts2 Oracle分页
- HttpServletRequest接口的getSession方法
- 临时表空间
- MOSS身份安全的初步研究
- [易飞]品号属性的定期监控
- MOSS 权限管理总结
- struts2.0+hibernate+oracle的分页详解
- Android4种布局详解
- 从SQL Server 2008 升级到 SQL Server 2008 R2
- ACM心得——(写的很好,留着警示自己)
- 解决oracle+hibernate自动增长类型详解
- Linux系统磁盘分区管理命令
- Android: R cannot be resolved to a variable
- 分享11款主流的开源编程工具
- Oracle SQL优化 总结