<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.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 雪山飛鵠 閱讀(20182) 評論(7)  編輯  收藏 所屬分類: spring 、JPA

    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
    有問題請回復。  回復  更多評論
      

    主站蜘蛛池模板: 四虎永久免费地址在线观看| 免费精品国偷自产在线在线| 国产亚洲福利一区二区免费看| 亚洲国产精品久久网午夜| 97在线视频免费播放| 婷婷亚洲综合五月天小说| 欧洲人成在线免费| 亚洲国产精品久久久久婷婷老年 | 亚洲成a人无码亚洲成av无码| 国产四虎免费精品视频| 亚洲人成网站在线观看播放动漫| 亚洲免费网站在线观看| 亚洲性无码av在线| 精品久久洲久久久久护士免费| 亚洲国产成人精品无码区二本| 国产禁女女网站免费看| 四虎成人精品国产永久免费无码| 亚洲色偷偷狠狠综合网| 暖暖日本免费中文字幕| 亚洲国产精品日韩在线观看| 最新中文字幕电影免费观看| 午夜亚洲国产精品福利| 国产成人A亚洲精V品无码| 伊人久久免费视频| 精品亚洲AV无码一区二区| 国产免费怕怕免费视频观看| 一区二区三区在线免费| 亚洲精品福利视频| 最新欧洲大片免费在线| 黄网站色视频免费看无下截| 亚洲AV无码一区东京热久久| 波多野结衣在线免费观看| 国产精品亚洲一区二区三区| 亚洲AV永久青草无码精品| 免费看成人AA片无码视频羞羞网| 自拍偷自拍亚洲精品播放| 国产成人精品日本亚洲网站| AA免费观看的1000部电影| 成人免费观看男女羞羞视频| 亚洲色欲www综合网| 国产一区二区三区免费看|