溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

          點我下載工程代碼
          實體類
          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.class2);
                  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-8</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>1</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時返回給瀏覽器的頭信息.
          點我下載工程代碼
          posted on 2010-11-02 10:47 雪山飛鵠 閱讀(20187) 評論(7)  編輯  收藏 所屬分類: springJPA

          Feedback

          # re: 基于注解的SpringMVC整合JPA 2010-11-03 16:53 路人甲
          你用@Transactional在每個方法上進行了標注,這樣有點麻煩,如果你把 @Transactional在接口上進行標注就方便多了  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2011-07-15 15:50
          @路人甲
          貌似listAll方法沒有通過單元測試,多表查詢 Query query=entityManager.createQuery(" from Employee ");通不過  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2011-08-31 17:28 齊魯人
          請問你這個例子能在jboss4.2.2上通過嗎?為什么總是出現類似不能構造entityManagerFactory的錯誤?  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2013-05-26 10:34 chiweng
          項目啟動時,不能自動創建表,但是手動建表后,可以CRUD,請問怎樣解決  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2013-06-05 13:51 路人已
          想了解spring mvc 與存儲過程調用方面的知識  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2013-08-26 10:16 chenwei
          @chiweng
          <property name="hibernate.hbm2ddl.auto" value="create" />

          @博主,請問我在另外java工程采用spring data jpa,我想把這個工程打成jar包,或者說用maven管理,導入到spring mvc工程中,讓這個spring data jpa采用spring mvc這個工程的jpa數據庫配置。那么,這樣我可以在controller中調用這個工程的service了。
          將entity獨立出來,可以更加清晰,請問要怎么解決我的問題,謝謝!
          我的聯系 1019990976 at qq.com  回復  更多評論
            

          # re: 基于注解的SpringMVC整合JPA 2014-04-14 15:43 最代碼
          最代碼網站上轉載了你的文章,地址:http://www.zuidaima.com/share/1751862510177280.htm
          有問題請回復。  回復  更多評論
            

          主站蜘蛛池模板: 镇赉县| 濉溪县| 农安县| 临猗县| 临江市| 平乡县| 钟祥市| 乐陵市| 平和县| 河北区| 敦煌市| 大渡口区| 怀化市| 潢川县| 巢湖市| 安西县| 大丰市| 长顺县| 舒兰市| 大悟县| 和硕县| 莱西市| 深水埗区| 峡江县| 丽江市| 平安县| 和硕县| 鄂温| 疏附县| 耿马| 工布江达县| 孝昌县| 泰宁县| 濮阳市| 浮梁县| 霍邱县| 镇安县| 吴堡县| 无棣县| 朔州市| 镇坪县|