`
shoppingbill
  • 浏览: 58326 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2+Spring+Hibernate整合分页

阅读更多

创建数据库:

 

 

DROP TABLE IF EXISTS `oa`.`t_system_log`;
CREATE TABLE  `oa`.`t_system_log` (
  `LOG_ID` varchar(20) NOT NULL default '',
  `LOG_TYPE` char(2) NOT NULL default '',
  `EVENT` varchar(100) NOT NULL default '',
  `REG_DATETIME` datetime NOT NULL default '0000-00-00 00:00:00',
  `REG_USR_ID` varchar(20) NOT NULL default '',
  `reg_user_id` varchar(255) default NULL,
  PRIMARY KEY  (`LOG_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

 

Log.java

 

package com.qtec.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * 
 * @author Bill.Zhang
 *
 */
@Entity
@Table(name="t_system_log")
public class Log {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private String log_id;
	
	private String log_type;
	private String event;
	private Date reg_datetime;
	private String reg_user_id;
	
	public String getLog_id() {
		return log_id;
	}
	public void setLog_id(String logId) {
		log_id = logId;
	}
	public String getLog_type() {
		return log_type;
	}
	public void setLog_type(String logType) {
		log_type = logType;
	}
	public String getEvent() {
		return event;
	}
	public void setEvent(String event) {
		this.event = event;
	}
	public Date getReg_datetime() {
		return reg_datetime;
	}
	public void setReg_datetime(Date regDatetime) {
		reg_datetime = regDatetime;
	}
	public String getReg_user_id() {
		return reg_user_id;
	}
	public void setReg_user_id(String regUserId) {
		reg_user_id = regUserId;
	}
}

 

 

MemberDao.java

 

package com.qtec.dao;

import java.util.List;

/**
 * 
 * @author Bill.Zhang
 *
 */
public interface MemberDao {
	
	/**
	 * 
	 * @param hsql
	 * @param offset
	 * @param length
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List queryForPage(final String hsql,final int offset, final int length);
	
	/**
	 * 
	 * @return
	 */
	public int getAllRowCount(String hsql);
	
	public List listAll();
}

 

MemberDaoImpl.java

 

package com.qtec.dao;

import 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;

import com.mysql.jdbc.log.Log;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao {

	@Override
	public int getAllRowCount(String hsql) {
		return getHibernateTemplate().find(hsql).size();
	}

	@SuppressWarnings("unchecked")
	public List queryForPage(final String hsql, final int offset, final int length) {
		List list = getHibernateTemplate().executeFind(new HibernateCallback(){
			@Override
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hsql); 
				query.setFirstResult(offset); 
				query.setMaxResults(length);
				List list = query.list();
				return list;
			}
		});
		return list;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List listAll() {
		return getHibernateTemplate().find("from Log");
	}

}

 

PageBean.java

 

 

package com.qtec.util;

import java.util.List;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class PageBean {
	
	@SuppressWarnings("unchecked")
	private List list;
	
	private int allRow;
	private int totalPage;
	private int currentPage;
	private int pageSize;
	
	private boolean isFirstPage;
	private boolean isLastPage;
	private boolean hasPreviewPage;
	private boolean hasNextPage;
	
	@SuppressWarnings("unchecked")
	public List getList() {
		return list;
	}
	@SuppressWarnings("unchecked")
	public void setList(List list) {
		this.list = list;
	}
	public int getAllRow() {
		return allRow;
	}
	public void setAllRow(int allRow) {
		this.allRow = allRow;
	}
	public int getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	
	/**
	 * initialize page information 
	 */
	public void init(){
		this.isFirstPage = isFirstPage();
		this.isLastPage = isLastPage();
		this.hasPreviewPage = isHasPreviewPage();
		this.hasNextPage = isHasNextPage();
	}
	
	public boolean isFirstPage() {
		return currentPage == 1;
	}
 
	public boolean isLastPage() {
		return currentPage == totalPage;
	}
 
	public boolean isHasPreviewPage() {
		return currentPage !=1;
	}
 
	public boolean isHasNextPage() {
		return currentPage != totalPage;
	}
	
	public static int countTotalPage(final int pageSize,final int allRows){
		return allRows%pageSize == 0 ? allRows/pageSize : allRows/pageSize + 1;
	}
	
	public static int countOffset(final int pageSize, final int currentPage){
		return pageSize*(currentPage-1);
	}
	
	public static int countCurrentPage(int page){
		return page==0?1:page;
	}
	
}

 

MemberService.java

 

package com.qtec.service;

import java.util.List;

import com.qtec.util.PageBean;

/**
 * 
 * @author Bill.Zhang
 *
 */
public interface MemberService {
  public PageBean queryForPage(int pageSize,int currentPage);
  public List listAll();
}

 MemberServiceImpl.java

 

 

package com.qtec.service;

import java.util.List;

import com.qtec.dao.MemberDao;
import com.qtec.util.PageBean;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class MemberServiceImpl implements MemberService {

	private MemberDao memberDao;
	
	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}

	@SuppressWarnings("unchecked")
	@Override
	public PageBean queryForPage(int pageSize,int currentPage){
		final String hsql = "from Log";
		int allRow = memberDao.getAllRowCount(hsql);
		int totalPage = PageBean.countTotalPage(pageSize, allRow);
		final int offset = PageBean.countOffset(pageSize, currentPage);
		int length = pageSize;
		final int page = PageBean.countCurrentPage(currentPage); 
		List list = memberDao.queryForPage(hsql, offset, length);
		
		PageBean pageBean = new PageBean();
		pageBean.setAllRow(allRow);
		pageBean.setCurrentPage(page);
		pageBean.setPageSize(pageSize);
		pageBean.setTotalPage(totalPage);
		pageBean.setList(list);
		pageBean.init();
		return pageBean;
	}
	
	public List listAll(){
		return memberDao.listAll();
	}

}

 

MemberAction.java

 

package com.qtec.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import com.qtec.service.MemberService;
import com.qtec.util.PageBean;

/**
 * 
 * @author Bill.Zhang
 *
 */
@ParentPackage("struts-default")
@Namespace("/")
public class MemberAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private MemberService memberService;
	
	public void setMemberService(MemberService memberService) {
		this.memberService = memberService;
	}
	
	@Action(value="member",
			results={
			@Result(name="success",location="/index.jsp")
	}
	)
	@Override
	public String execute() throws Exception {
		this.pageBean = memberService.queryForPage(10, page);
		return SUCCESS;
	}
	
	private int page;
	private PageBean pageBean;
	
	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
}
 

 struts.properties

 

struts.enable.DynamicMethodInvocation=false
struts.objectFactory=spring
struts.devMode=false
struts.custom.i18n.resources=message
struts.locale=UTF-8 
struts.i18n.encoding=UTF-8
struts.ui.theme=simple
struts.multipart.maxSize=209715200

 applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://192.168.1.100:3306/oa"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/> 
	</bean>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="annotatedClasses">
			<list>
				<value>com.qtec.entity.Log</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<bean id="memberDao" class="com.qtec.dao.MemberDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<bean id="memberService" class="com.qtec.service.MemberServiceImpl">
		<property name="memberDao" ref="memberDao"/>
	</bean>
	
	<bean id="memberAction" class="com.qtec.action.MemberAction" scope="prototype">
		<property name="memberService" ref="memberService"/>
	</bean>
</beans>

 web.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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Page</display-name>
  
  <filter>
  	  <filter-name>struts2</filter-name>
	  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
	  <init-param>
	     <param-name>actionPackages</param-name>
	     <param-value>com.qtec.action</param-value>
	  </init-param>		
  </filter>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
 <listener>
 	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <context-param>
 	<param-name>contextConfigLocation</param-name>
 	<param-value>/WEB-INF/applicationContext.xml</param-value>
 </context-param> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Members List</title>
</head>
<body>
 	<table>
 	 	<tr>
 		<td>Log Id</td>
 		<td>Log Type</td>
 		<td>Event</td>
 		<td>Registration Date Time</td>
 		<td>Registration User Id</td>
 		</tr>
 		
 	<s:iterator value="pageBean.list">
 		<tr>
 		<td><s:property value="log_id"/></td>
 		<td><s:property value="log_type"/></td>
 		<td><s:property value="event"/></td>
 		<td><s:property value="reg_datetime"/>||</td>
 		<td><s:property value="reg_user_id"/></td>
 		</tr>
 	</s:iterator>
 	 	<tr>
 		<td>
 		  总共: <s:property value="pageBean.allRow"/> 条记录
 		</td>  
 	  	<td>
 	  	共:<s:property value="pageBean.totalPage"/>页
 	  	</td>
 	  	<td>
 	  	当前第 <s:property value="pageBean.currentPage"/>页
 	  	</td>
 	  	<td>
 	  		<s:if test="%{pageBean.currentPage == 1}">
 	  			第一页 上一页
 	  		</s:if>
 	  		<s:else>
 	  			<a href="member.action?page=1">第一页</a>
 	  			<a href="member.action?page=<s:property value="%{pageBean.currentPage-1}"/>">上一页</a>
 	  		</s:else>
 	  	</td>
 	  	<td>
 	  		<s:if test="%{pageBean.currentPage != pageBean.totalPage}">
 	  			<a href="member.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页</a>
 	  			<a href="member.action?page=<s:property value="%{pageBean.totalPage}"/>">最后一页</a>
 	  		</s:if>
 	  	     <s:else>
 	  	     	下一页 最后一页
 	  	     </s:else>
 	  	</td>
 	  </tr>
 	</table>
</body>
</html>

 

源码下载: 

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics