PersonAction类
package com.my.action;
import java.util.List;
import javax.annotation.Resource;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.json.annotations.JSON;
import com.my.bean.Person;
import com.my.service.IPersonService;
import com.mysql.jdbc.jdbc2.optional.SuspendableXAConnection;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage(value="json-default")
public class PersonAction extends ActionSupport {
private Person person;
private List list;
@Resource
private IPersonService iPersonService;
@JSON(serialize=false)
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
@Action(value="/showPerson",
results={
@Result(name=SUCCESS, type="json")
})
public String showPerson(){
list = iPersonService.getAllPerson();
return SUCCESS;
}
@Action(value="add",
results={
@Result(location="/show.jsp",type="redirect")
})
public String add(){
iPersonService.add(person);
return SUCCESS;
}
}
实体bean–Person
package com.my.bean;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_person")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@OneToMany(mappedBy="person",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private Set pets = new HashSet();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getPets() {
return pets;
}
public void setPets(Set pets) {
this.pets = pets;
}
}
实体bean–Pet
package com.my.bean;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_pet")
public class Pet {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@ManyToOne
@JoinColumn(name="p_id")
private Person person;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
DAO层–IPersonDao
package com.my.dao;
import java.util.List;
import com.my.bean.Person;
public interface IPersonDao {
public void add(Person per);
public List getAllPerson();
}
DAOImpl–PersonDaoImpl
package com.my.dao;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.my.bean.Person;
@Repository("personDaoImpl")
public class PersonDaoImpl implements IPersonDao {
//@Autowired
@Resource
private SessionFactory sessionFactory;
@Transactional(readOnly=false,propagation=Propagation.REQUIRED)
public void add(Person per ) {
sessionFactory.getCurrentSession().save(per);
}
@Transactional(readOnly=true)
public List getAllPerson() {
return sessionFactory.getCurrentSession().createQuery("from Person").list();
}
}
PersonServiceImpl
package com.my.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import com.my.bean.Person;
import com.my.dao.IPersonDao;
@Service("IPersonService")
public class PersonServiceImpl implements IPersonService {
@Resource
private IPersonDao personDaoImpl;
public void add(Person per) {
personDaoImpl.add(per);
}
public List getAllPerson() {
// TODO Auto-generated method stub
return personDaoImpl.getAllPerson();
}
}
spring-DaseBean.xml配置文件
<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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<context:property-placeholder location="classpath:db.properties"/>
<context:component-scan base-package="com.my.*"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${driverClass}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
<property name="acquireIncrement" value="${acquireIncrement}"/>
<property name="initialPoolSize" value="${initialPoolSize}"/>
<property name="minPoolSize" value="${minPoolSize}"/>
<property name="maxPoolSize" value="${maxPoolSize}"/>
<property name="maxIdleTime" value="${maxIdleTime}"/>
bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">
<list>
<value>com.my.beanvalue>
list>
property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql =true
value>
property>
bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
bean>
<tx:annotation-driven/>
beans>
struts.xml配置文件
<struts>
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="true" />
struts>
db.properties数据源配置参数
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///pet
user=root
password=root
acquireIncrement=10
initialPoolSize=10
minPoolSize=3
maxPoolSize=500
maxIdleTime=1800