通過SpringMVC整合基於註解的JPA的實例教程代碼下載

原文:通過SpringMVC整合基於註解的JPA的實例教程代碼下載

源代碼下載地址:http://www.zuidaima.com/share/1751862510177280.htm

實體類
Department

package com.sj.bean;

 import java.util.Set;

 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;

@Entity
@Table(name=" department " ,catalog=" sj " )
 public class Department {
 
 private int id;
 private String name;
 private Set <Employee> sets;
 @Id
 @Column(name=" id " )
 @GeneratedValue(strategy=GenerationType.AUTO)
 public int getId() {
 return id;
 }
 public void setId( int id) {
 this .id= id;
 }
 @Column(name=" name " )
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this .name= name;
 }
 @OneToMany(mappedBy=" department " ,cascade=CascadeType.ALL)
 public Set <Employee> getSets() {
 return sets;
 }
 public void setSets(Set <Employee> sets) {
 this .sets= sets;
 }
 
}

Employee

package com.sj.bean;

 import java.io.Serializable;

 import javax.persistence.CascadeType;
 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;


@SuppressWarnings( " serial " )
@Entity
@Table(name=" employee " ,catalog=" sj " )
 public class Employee implements Serializable{
 
 private int id;
 private String name;
 private Department department;
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name=" id " )
 public int getId() {
 return id;
 }
 public void setId( int id) {
 this .id= id;
 }
 @Column(name=" name " )
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this .name= name;
 }
 @ManyToOne(cascade=CascadeType.ALL)
 @JoinColumn(name=" deptid " )
 public Department getDepartment() {
 return department;
 }
 public void setDepartment(Department department) {
 this .department= department;
 }
 
}

BaseDAO

package com.sj.dao;

 import java.util.List;

 public interface BaseDAO <T> {
 
 List <T> listAll();
 Object findById(Class <T> c, int id);
 boolean save(Object object);
 boolean update(Object object);
 boolean delete(Object object);
 
} 

BaseDAOImpl

package com.sj.dao;

 import java.util.List;

 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;

 import org.springframework.stereotype.Component;

@Component( " baseDAO " )
 public class BaseDAOImpl <T> implements BaseDAO <T> {

 @PersistenceContext(unitName=" sjPU " )
 private EntityManager entityManager;
 
 
 public boolean delete(Object object) {
 try {
 entityManager.remove(object);
 return true ;
 } catch (Exception e) {
 e.printStackTrace();
 }
 return false ;
 }

 public Object findById(Class <T> c, int id) {
 try {
 return entityManager.find(c, id);
 } catch (Exception e) {
 e.printStackTrace();
 }
 return null ;
 }

 public boolean save(Object object) {
 try {
 entityManager.persist(object);
 return true ;
 } catch (Exception e) {
 e.printStackTrace();
 }
 return false ;
 }

 public boolean update(Object object) {
 try {
 entityManager.merge(object);
 return true ;
 } catch (Exception e) {
 e.printStackTrace();
 }
 return false ;
 }

 @SuppressWarnings( " unchecked " )
 public List <T> listAll() {
 try {
 Query query= entityManager.createQuery( " from Employee " );
 return query.getResultList();
 } catch (Exception e) {
 e.printStackTrace();
 }
 return null ;
 }

}

BaseService

package com.sj.service;

 import java.util.List;

 public interface BaseService <T> {
 
 List <T> listAll();
 Object findById(Class <T> c, int id);
 boolean save(Object object);
 boolean update(Object object);
 boolean delete(Object object);
}

BaseServiceImpl

package com.sj.service;

 import java.util.List;

 import javax.annotation.Resource;

 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;

 import com.sj.dao.BaseDAO;

@Component( " baseServiceImpl " )
 public class BaseServiceImpl <T> implements BaseService <T> {

 @Resource(name=" baseDAO " )
 private BaseDAO <T> baseDAO;
 
 public BaseDAO <T> getBaseDAO() {
 return baseDAO;
 }

 public void setBaseDAO(BaseDAO <T> baseDAO) {
 this .baseDAO= baseDAO;
 }

 @Transactional(propagation=Propagation.REQUIRED)
 public boolean delete(Object object) {
 return baseDAO.delete(object);
 }

 @Transactional(propagation=Propagation.REQUIRED)
 public Object findById(Class <T> c, int id) {
 return baseDAO.findById(c, id);
 }

 @Transactional(propagation=Propagation.REQUIRED)
 public List <T> listAll() {
 return baseDAO.listAll();
 }

 @Transactional(propagation=Propagation.REQUIRED)
 public boolean save(Object object) {
 return baseDAO.save(object);
 }

 @Transactional(propagation= Propagation.REQUIRED)
 public boolean update(Object object) {
 return baseDAO.update(object);
 }
 
}

EmployeeAction

package com.sj.action;

 import java.util.List;

 import javax.annotation.Resource;

 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;

 import com.sj.bean.Employee;
 import com.sj.service.BaseService;

@Controller
@RequestMapping( " /employee.action " )
 public class EmployeeAction {
 
 @SuppressWarnings( " unchecked " )
 @Resource(name=" baseServiceImpl " )
 private BaseService service;
 
 
 @SuppressWarnings( " unchecked " )
 @RequestMapping(method=RequestMethod.GET,params=" method=listAll" )
 public ModelAndView listAll(){
 List <Employee> list=service.listAll();
 return new ModelAndView( " list " ).addObject( " list " , list);
 }
 
 
 @ResponseBody
 @RequestMapping(params=" method=listOther" )
 public String listOther(){
 String str=" <font color='red'>HelloWorld</font> " ;
 return str;
 }
}

TestApp

package com.sj.test;

 import javax.annotation.Resource;

 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 import com.sj.bean.Department;
 import com.sj.bean.Employee;
 import com.sj.service.BaseService;

@ContextConfiguration(locations=" file:D:\\Program Files\\MyEclipse 8.5-workspace\\sj\\WebRoot\\WEB-INF\\applicationContext.xml " )
@RunWith(SpringJUnit4ClassRunner. class )
 public class TestApp {
 
 @SuppressWarnings( " unchecked " )
 @Resource(name=" baseServiceImpl " )
 BaseService baseService;
 
 @Test
 public void save(){
 Employee employee=new Employee();
 employee.setName( " 張三 " );
 Department department=new Department();
 department.setName( " 軟件測試組 " );
 employee.setDepartment(department);
 baseService.save(employee);
 }
 
 @SuppressWarnings( " unchecked " )
 @Test
 public void query(){
 Employee employee= (Employee) baseService.findById(Employee. class , );
 System.out.println(employee.getId() + " \t " + employee.getName() + " \t " + employee.getDepartment().getName());
 }
 
} 

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:p=" http://www.springframework.org/schema/p " 
 xmlns:aop=" http://www.springframework.org/schema/aop " 
 xmlns:tx=" http://www.springframework.org/schema/tx " 
 xmlns:context=" http://www.springframework.org/schema/context " 
 xsi:schemaLocation=" http://www.springframework.org/schema/beans 
 http: // www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 http: // www.springframework.org/schema/tx 
 http: // www.springframework.org/schema/tx/spring-tx.xsd 
 http: // www.springframework.org/schema/aop 
 http: // www.springframework.org/schema/aop/spring-aop.xsd 
 http: // www.springframework.org/schema/context 
 http: // www.springframework.org/schema/context/spring-context.xsd"> 
 
 <context:annotation - config /> 
 <context:component - scan base - package=" com.sj.* " /> 
 <aop:aspectj - autoproxy /> 
 
 <tx:annotation - driven transaction - manager=" transactionManager " /> 

 <bean id=" entityManagerFactory " class=" org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean "> 
 <property name=" persistenceUnitName " value=" sjPU " /> 
 <property name=" persistenceXmlLocation " value=" classpath:META-INF/persistence.xml "></property> 
 </bean> 
 <bean id=" transactionManager " class=" org.springframework.orm.jpa.JpaTransactionManager "> 
 <property name=" entityManagerFactory " ref= " entityManagerFactory " /> 
 </bean> 
 </beans>

dispatcherServlet-servlet.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:p=" http://www.springframework.org/schema/p " 
 xmlns:aop=" http://www.springframework.org/schema/aop " 
 xmlns:tx=" http://www.springframework.org/schema/tx " 
 xmlns:context=" http://www.springframework.org/schema/context " 
 xsi:schemaLocation=" http://www.springframework.org/schema/beans 
 http: // www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 http: // www.springframework.org/schema/tx 
 http: // www.springframework.org/schema/tx/spring-tx.xsd 
 http: // www.springframework.org/schema/aop 
 http: // www.springframework.org/schema/aop/spring-aop.xsd 
 http: // www.springframework.org/schema/context 
 http: // www.springframework.org/schema/context/spring-context.xsd"> 
 
 <context:component - scan base - package=" com.sj.action " /> 
 <bean id=" defaultAnnotationHandlerMapping " class=" org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping " /> 
 <bean id=" annotationMethodHandlerAdapter " class=" org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter "> 
 <property name=" messageConverters "> 
 <list> 
 <bean class=" org.springframework.http.converter.StringHttpMessageConverter "> 
 <property name=" supportedMediaTypes "> 
 <list> 
 <value> text / html;charset=utf - </value> 
 <value> text / xml </value> 
 <value> text / plain </value> 
 </list> 
 </property> 
 </bean> 
 </list> 
 </property> 
 </bean> 
 
 <bean id=" internalResourceViewResolver " class=" org.springframework.web.servlet.view.InternalResourceViewResolver "> 
 <property name=" suffix " value=" .jsp "></property> 
 <property name=" prefix " value=" / "></property> 
 <property name=" viewClass " value= " org.springframework.web.servlet.view.JstlView " /> 
 </bean> 
 
 </beans>

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"> 
 <welcome - file - list> 
 <welcome - file> index.jsp </welcome - file> 
 </welcome - file - list> 
 
 <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> 
 <servlet> 
 <servlet - name> dispatcherServlet </servlet - name> 
 <servlet - class> org.springframework.web.servlet.DispatcherServlet </servlet - class> 
 <load - on - startup> </load - on - startup> 
 </servlet> 
 <servlet - mapping> 
 <servlet - name> dispatcherServlet </servlet - name> 
 <url - pattern>* .action </url - pattern> 
 </servlet - mapping> 
 
 </web - app> 

src/META-INF/persistence.xml

<?xml version=" 1.0 " encoding=" UTF-8 " ?> 
 <persistence xmlns=" http://java.sun.com/xml/ns/persistence " 
 xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " 
 xsi:schemaLocation=" http://java.sun.com/xml/ns/persistence 
 http: // java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
 version=" 1.0 "> 

 <persistence - unit name=" sjPU " transaction - type=" RESOURCE_LOCAL "> 
 <provider> org.hibernate.ejb.HibernatePersistence </provider> 
 <properties> 
 <property name=" hibernate.connection.driver_class " value=" com.mysql.jdbc.Driver " /> 
 <property name=" hibernate.connection.url " value=" jdbc:mysql://localhost:3306/sj " /> 
 <property name=" hibernate.connection.username " value=" root " /> 
 <property name=" hibernate.connection.password " value=" root " /> 
 <property name=" hibernate.show_sql " value=" true " /> 
 <property name=" hibernate.format_sql " value=" true " /> 
 <property name=" hibernate.hbm2ddl.auto " value= " update " /> 
 </properties> 
 </persistence - unit> 

 </persistence> 

list.jsp

<%@ page language=" java " contentType=" text/html; charset=UTF-8" pageEncoding=" UTF-8 " %> 
 <% @ taglib prefix=" c " uri=" http://java.sun.com/jsp/jstl/core " %> 
 <! 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> 
 <c: if test=" ${empty requestScope.list} "> 
 對不起,沒有要顯示的記錄 !!!! 
 </c: if> 
 <c: if test=" ${!empty requestScope.list} "> 
 <c:forEach items=" ${requestScope.list} " var=" s "> 
 <c:out value=" ${s.id} " /> 
 <c:out value=" ${s.name} " /> 
 <c:out value= " ${s.department.name} " /> 
 <br /> 
 </c:forEach> 
 </c: if> 
 </body> 
 </html>

這裏重點關注applicationContext.xml、dispatcherServlet-servlet.xml、EmployeeAction。其中dispatcherServlet-servlet.xml文件的命名規則遵循web.xml中配置的dispatcherServlet servlet的servlet-name屬性的值。dispatcherServlet-servlet.xml裏面配置了開啓SpringMVC的註解解析器以及視圖渲染器,和處理response時返回給瀏覽器的頭信息.
點我下載工程代碼

發佈了183 篇原創文章 · 獲贊 19 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章