1. 准备条件:
1.1 在MYSQL中创建hibernate数据库,创建person表
1.2 创建hibernate工程,导入struts2,hibernate3.3,mysql驱动包。
2. hibernate.cfg.xml
3. Person.java
4. person.hbm.xml
5. HibernateUtil.java
6. DBPerson.java
7. 配置web.xml
8. 配置struts.xml
9. PersonAction.java
10. register.jsp
11. listAll.jsp
12. getPerson.jsp
13. updatePerson.jsp
1.1 在MYSQL中创建hibernate数据库,创建person表
1.2 创建hibernate工程,导入struts2,hibernate3.3,mysql驱动包。
2. hibernate.cfg.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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="format_sql">true</property>
<property name="show_sql">true</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="person.hbm.xml" />
</session-factory>
</hibernate-configuration>
3. Person.java
package com.hibernate.model;
import java.sql.Date;
public class Person {
private Integer id;
private String username;
private String password;
private Integer age;
private Date registerdate;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getRegisterdate() {
return registerdate;
}
public void setRegisterdate(Date registerdate) {
this.registerdate = registerdate;
}
}
4. person.hbm.xml
<?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>
<class name="com.hibernate.model.Person" table="person">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="username" column="username" type="string"></property>
<property name="password" column="password" type="string"></property>
<property name="age" column="age" type="integer"></property>
<property name="registerdate" column="registerdate" type="date"></property>
</class>
</hibernate-mapping>
5. HibernateUtil.java
package com.hibernate.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactory;
//静态代码块(类加载就执行)
static{
try{
sessionFactory=new Configuration().configure().buildSessionFactory();
}catch(Exception ex){
System.out.println("创建sessionFactory时出错");
}
}
//获得Session
public static Session getSession(){
Session session=sessionFactory.openSession();
return session;
}
//关闭session
public static void closeSession(Session session){
if(session!=null){
session.close();
}
}
}
6. DBPerson.java
package com.hibernate.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.hibernate.model.Person;
import com.hibernate.util.HibernateUtil;
public class DBPerson {
/**
* 保存
* @param bean
*/
public static void save(Person bean){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.save(bean);
tx.commit();
}catch(Exception ex){
System.out.println("保存数据时出错");
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession(session);
}
}
/**
* 查询所有
* @return
*/
@SuppressWarnings("unchecked")
public static List<Person> getAllPerson(){
Session session=HibernateUtil.getSession();
Transaction tx=null;
String hql="from Person";
List<Person> list=null;
try{
tx=session.beginTransaction();
Query query=session.createQuery(hql);
list=(List<Person>)query.list();
tx.commit();
}catch(Exception ex){
System.out.println("查询数据时出错");
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession(session);
}
return list;
}
/**
* 根据ID获得一条记录
* @param id
* @return
*/
public static Person getPersonById(Integer id){
Session session=HibernateUtil.getSession();
Transaction tx=null;
Person person=null;
try{
tx=session.beginTransaction();
person=(Person)session.get(Person.class, id);
tx.commit();
}catch(Exception ex){
System.out.println("查询单条数据时出错");
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession(session);
}
return person;
}
/**
* 删除
* @param bean
*/
public static void delPerson(Person bean){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.delete(bean);
tx.commit();
}catch(Exception ex){
System.out.println("删除数据时出错");
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession(session);
}
}
/**
* 修改
*/
public static void updatePerson(Person bean){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.update(bean);
tx.commit();
}catch(Exception ex){
System.out.println("更新数据时出错");
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession(session);
}
}
}
7. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
8. 配置struts.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="hibernate" extends="struts-default">
<action name="save" class="com.hibernate.action.PersionAction" method="save" >
<result name="success">/listAll.jsp</result>
</action>
<action name="getPerson" class="com.hibernate.action.PersionAction" method="getPerson" >
<result name="success">/getPerson.jsp</result>
</action>
<action name="updatePerson" class="com.hibernate.action.PersionAction" method="getPerson" >
<result name="success">/updatePerson.jsp</result>
</action>
<action name="doUpdatePerson" class="com.hibernate.action.PersionAction" method="updatePerson" >
<result name="success">/listAll.jsp</result>
</action>
<action name="deletePerson" class="com.hibernate.action.PersionAction" method="deletePerson" >
<result name="success">/listAll.jsp</result>
</action>
</package>
</struts>
9. PersonAction.java
package com.hibernate.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.hibernate.dao.DBPerson;
import com.hibernate.model.Person;
import com.opensymphony.xwork2.ActionSupport;
public class PersionAction extends ActionSupport {
private Integer id;
private String username;
private String password;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String save() throws Exception {
Person person=new Person();
person.setUsername(username);
person.setPassword(password);
person.setAge(age);
java.sql.Date registerdate=new java.sql.Date(new java.util.Date().getTime());
person.setRegisterdate(registerdate);
DBPerson.save(person);
List<Person> list=DBPerson.getAllPerson();
ServletActionContext.getRequest().setAttribute("list", list);
return SUCCESS;
}
public String getPerson() throws Exception {
Person person=DBPerson.getPersonById(id);
ServletActionContext.getRequest().setAttribute("person", person);
return SUCCESS;
}
public String updatePerson() throws Exception {
Person person=DBPerson.getPersonById(id);
person.setPassword(password);
person.setAge(age);
DBPerson.updatePerson(person);
List<Person> list=DBPerson.getAllPerson();
ServletActionContext.getRequest().setAttribute("list", list);
return SUCCESS;
}
public String deletePerson() throws Exception {
Person person=DBPerson.getPersonById(id);
DBPerson.delPerson(person);
List<Person> list=DBPerson.getAllPerson();
ServletActionContext.getRequest().setAttribute("list", list);
return SUCCESS;
}
}
10. register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>注册</title>
</head>
<body>
<form action="save.action" method=”post”>
<table align="center">
<tr>
<td>用户名</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" name="age" /></td>
</tr>
<tr>
<td><input type="submit" value="submit" /></td>
<td><input type="reset" value="reset" /></td>
</tr>
</table>
</form>
</body>
</html>
11. listAll.jsp
<%@ 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>显示列表</title>
</head>
<body>
<table border="1" align="center" cellpadding="5">
<tr>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>注册日期</th>
<th>操作</th>
</tr>
<s:iterator value="#request.list" id="person" >
<tr>
<td>
<s:a href="getPerson.action?id=%{#person.id}">
<s:property value="username" />
</s:a>
</td>
<td>
<s:property value="password" />
</td>
<td>
<s:property value="age" />
</td>
<td>
<s:property value="registerdate" />
</td>
<td>
<s:a href="updatePerson.action?id=%{#person.id}">
更新
</s:a>
<s:a href="deletePerson.action?id=%{#person.id}">
删除
</s:a>
</td>
</tr>
</s:iterator>
</table>
</body>
</html>
12. getPerson.jsp
<%@ 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>Insert title here</title>
</head>
<body>
<table align="center">
<tr>
<td>用户名</td>
<td><s:property value="#request.person.username" /></td>
</tr>
<tr>
<td>密码</td>
<td><s:property value="#request.person.password" /></td>
</tr>
<tr>
<td>年龄</td>
<td><s:property value="#request.person.age" /></td>
</tr>
<tr>
<td>注册日期</td>
<td><s:property value="#request.person.registerdate" /></td>
</tr>
</table>
</body>
</html>
13. updatePerson.jsp
<%@ 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>Insert title here</title>
</head>
<body>
<form action="doUpdatePerson.action" method="post">
<s:hidden name="id" value="%{#request.person.id}"></s:hidden>
<table align="center">
<tr>
<td>用户名</td>
<td><s:property value="#request.person.username" /></td>
</tr>
<tr>
<td>密码</td>
<td><s:password name="password" value="%{#request.person.password}"></s:password></td>
</tr>
<tr>
<td>年龄</td>
<td><s:textfield name="age" value="%{#request.person.age}" ></s:textfield></td>
</tr>
<tr>
<td>注册日期</td>
<td><s:property value="#request.person.registerdate" /></td>
</tr>
<tr>
<td><input type="submit" value="submit" /></td>
<td><input type="reset" value="reset" /></td>
</tr>
</table>
</form>
</body>
</html>