<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)  編輯  收藏 所屬分類: 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
    有問題請回復。  回復  更多評論
      

    主站蜘蛛池模板: 高清国语自产拍免费视频国产| 亚洲人AV在线无码影院观看| 国产一级高清视频免费看| 97在线视频免费| 久久久久女教师免费一区| 亚洲欧美日本韩国| 亚洲影视一区二区| 亚洲av无码一区二区三区不卡 | 亚洲AV无码日韩AV无码导航| 免费v片在线观看品善网| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 999zyz**站免费毛片| 爱情岛亚洲论坛在线观看| 99999久久久久久亚洲| 亚洲黄色在线电影| 亚洲不卡av不卡一区二区| 久久亚洲AV无码西西人体| 又粗又黄又猛又爽大片免费| 成年女人免费碰碰视频| 两性刺激生活片免费视频| 最近中文字幕电影大全免费版 | 亚洲精品国偷自产在线| 亚洲色图综合在线| 免费人成在线观看网站视频| 国产日产成人免费视频在线观看| 成人爽A毛片免费看| 国产精品视频永久免费播放| 青青青国产在线观看免费| 99久久久精品免费观看国产 | 亚洲av成人综合网| 精品亚洲AV无码一区二区| 亚洲国产精品成人久久久| 亚洲精品偷拍无码不卡av| 亚洲自偷精品视频自拍| 亚洲AV人人澡人人爽人人夜夜 | 国产一卡二卡四卡免费| 思思re热免费精品视频66| 美女视频黄a视频全免费| 成人毛片视频免费网站观看| 成人特黄a级毛片免费视频| 国产精品自在自线免费观看|