zoukankan      html  css  js  c++  java
  • 基于注解的SpringMVC整合JPA

    转自:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336768.html

     1 package com.sj.bean;
     2 
     3 import java.util.Set;
     4 
     5 import javax.persistence.CascadeType;
     6 import javax.persistence.Column;
     7 import javax.persistence.Entity;
     8 import javax.persistence.GeneratedValue;
     9 import javax.persistence.GenerationType;
    10 import javax.persistence.Id;
    11 import javax.persistence.OneToMany;
    12 import javax.persistence.Table;
    13 
    14 @Entity
    15 @Table(name="department",catalog="sj")
    16 public class Department {
    17    
    18    private int id;
    19    private String name;
    20    private Set<Employee> sets;
    21    @Id
    22    @Column(name="id")
    23    @GeneratedValue(strategy=GenerationType.AUTO)
    24    public int getId() {
    25        return id;
    26    }
    27    public void setId(int id) {
    28        this.id = id;
    29    }
    30    @Column(name="name")
    31    public String getName() {
    32        return name;
    33    }
    34    public void setName(String name) {
    35        this.name = name;
    36    }
    37    @OneToMany(mappedBy="department",cascade=CascadeType.ALL)
    38    public Set<Employee> getSets() {
    39        return sets;
    40    }
    41    public void setSets(Set<Employee> sets) {
    42        this.sets = sets;
    43    }
    44    
    45 }

    2.

     1 package com.sj.bean;
     2 
     3 import java.io.Serializable;
     4 
     5 import javax.persistence.CascadeType;
     6 import javax.persistence.Column;
     7 import javax.persistence.Entity;
     8 import javax.persistence.GeneratedValue;
     9 import javax.persistence.GenerationType;
    10 import javax.persistence.Id;
    11 import javax.persistence.JoinColumn;
    12 import javax.persistence.ManyToOne;
    13 import javax.persistence.Table;
    14 
    15 
    16 @SuppressWarnings("serial")
    17 @Entity
    18 @Table(name="employee",catalog="sj")
    19 public class Employee implements Serializable{
    20    
    21    private int id;
    22    private String name;
    23    private Department department;
    24    @Id
    25    @GeneratedValue(strategy=GenerationType.AUTO)
    26    @Column(name="id")
    27    public int getId() {
    28        return id;
    29    }
    30    public void setId(int id) {
    31        this.id = id;
    32    }
    33    @Column(name="name")
    34    public String getName() {
    35        return name;
    36    }
    37    public void setName(String name) {
    38        this.name = name;
    39    }
    40    @ManyToOne(cascade=CascadeType.ALL)
    41    @JoinColumn(name="deptid")
    42    public Department getDepartment() {
    43        return department;
    44    }
    45    public void setDepartment(Department department) {
    46        this.department = department;
    47    }
    48    
    49 }

    3.

     1 package com.sj.dao;
     2 
     3 import java.util.List;
     4 
     5 public interface BaseDAO<T> {
     6    
     7    List<T> listAll();
     8    Object findById(Class<T> c,int id);
     9    boolean save(Object object);
    10    boolean update(Object object);
    11    boolean delete(Object object);
    12    
    13 }    

    4.

     1 package com.sj.dao;
     2 
     3 import java.util.List;
     4 
     5 import javax.persistence.EntityManager;
     6 import javax.persistence.PersistenceContext;
     7 import javax.persistence.Query;
     8 
     9 import org.springframework.stereotype.Component;
    10 
    11 @Component("baseDAO")
    12 public class BaseDAOImpl<T> implements BaseDAO<T> {
    13 
    14    @PersistenceContext(unitName="sjPU")
    15    private EntityManager entityManager;
    16    
    17    
    18    public boolean delete(Object object) {
    19        try {
    20            entityManager.remove(object);
    21            return true;
    22        } catch (Exception e) {
    23            e.printStackTrace();
    24        }
    25        return false;
    26    }
    27 
    28    public Object findById(Class<T> c,int id) {
    29        try {
    30            return entityManager.find(c, id);
    31        } catch (Exception e) {
    32            e.printStackTrace();
    33        }
    34        return null;
    35    }
    36 
    37    public boolean save(Object object) {
    38        try {
    39            entityManager.persist(object);
    40            return true;
    41        } catch (Exception e) {
    42            e.printStackTrace();
    43        }
    44        return false;
    45    }
    46 
    47    public boolean update(Object object) {
    48        try {
    49            entityManager.merge(object);
    50            return true;
    51        } catch (Exception e) {
    52            e.printStackTrace();
    53        }
    54        return false;
    55    }
    56 
    57    @SuppressWarnings("unchecked")
    58    public List<T> listAll() {
    59        try {
    60            Query query=entityManager.createQuery(" from Employee ");
    61            return query.getResultList();
    62        } catch (Exception e) {
    63            e.printStackTrace();
    64        }
    65        return null;
    66    }
    67 
    68 }

    5.

     1 package com.sj.service;
     2 
     3 import java.util.List;
     4 
     5 public interface BaseService<T> {
     6    
     7    List<T> listAll();
     8    Object findById(Class<T> c,int id);
     9    boolean save(Object object);
    10    boolean update(Object object);
    11    boolean delete(Object object);
    12 }

    6.

     1 package com.sj.service;
     2 
     3 import java.util.List;
     4 
     5 import javax.annotation.Resource;
     6 
     7 import org.springframework.stereotype.Component;
     8 import org.springframework.transaction.annotation.Propagation;
     9 import org.springframework.transaction.annotation.Transactional;
    10 
    11 import com.sj.dao.BaseDAO;
    12 
    13 @Component("baseServiceImpl")
    14 public class BaseServiceImpl<T> implements BaseService<T>{
    15 
    16    @Resource(name="baseDAO")
    17    private BaseDAO<T> baseDAO;
    18    
    19    public BaseDAO<T> getBaseDAO() {
    20        return baseDAO;
    21    }
    22 
    23    public void setBaseDAO(BaseDAO<T> baseDAO) {
    24        this.baseDAO = baseDAO;
    25    }
    26 
    27    @Transactional(propagation=Propagation.REQUIRED)
    28    public boolean delete(Object object) {
    29        return baseDAO.delete(object);
    30    }
    31 
    32    @Transactional(propagation=Propagation.REQUIRED)
    33    public Object findById(Class<T> c, int id) {
    34        return baseDAO.findById(c, id);
    35    }
    36 
    37    @Transactional(propagation=Propagation.REQUIRED)
    38    public List<T> listAll() {
    39        return baseDAO.listAll();
    40    }
    41 
    42    @Transactional(propagation=Propagation.REQUIRED)
    43    public boolean save(Object object) {
    44        return baseDAO.save(object);
    45    }
    46 
    47    @Transactional(propagation=Propagation.REQUIRED)
    48    public boolean update(Object object) {
    49        return baseDAO.update(object);
    50    }
    51    
    52 }

    7.

     1 package com.sj.action;
     2 
     3 import java.util.List;
     4 
     5 import javax.annotation.Resource;
     6 
     7 import org.springframework.stereotype.Controller;
     8 import org.springframework.web.bind.annotation.RequestMapping;
     9 import org.springframework.web.bind.annotation.RequestMethod;
    10 import org.springframework.web.bind.annotation.ResponseBody;
    11 import org.springframework.web.servlet.ModelAndView;
    12 
    13 import com.sj.bean.Employee;
    14 import com.sj.service.BaseService;
    15 
    16 @Controller
    17 @RequestMapping("/employee.action")
    18 public class EmployeeAction {
    19    
    20    @SuppressWarnings("unchecked")
    21    @Resource(name="baseServiceImpl")
    22    private BaseService service;
    23    
    24    
    25    @SuppressWarnings("unchecked")
    26    @RequestMapping(method=RequestMethod.GET,params="method=listAll")
    27    public ModelAndView listAll(){
    28        List<Employee> list=service.listAll();
    29        return new ModelAndView("list").addObject("list", list);
    30    }
    31    
    32    
    33    @ResponseBody
    34    @RequestMapping(params="method=listOther")
    35    public String listOther(){
    36        String str="<font color='red'>HelloWorld</font>";
    37        return str;
    38    }
    39 }

    8.

     1 package com.sj.test;
     2 
     3 import javax.annotation.Resource;
     4 
     5 import org.junit.Test;
     6 import org.junit.runner.RunWith;
     7 import org.springframework.test.context.ContextConfiguration;
     8 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
     9 
    10 import com.sj.bean.Department;
    11 import com.sj.bean.Employee;
    12 import com.sj.service.BaseService;
    13 
    14 @ContextConfiguration(locations="file:D:\Program Files\MyEclipse 8.5-workspace\sj\WebRoot\WEB-INF\applicationContext.xml")
    15 @RunWith(SpringJUnit4ClassRunner.class)
    16 public class TestApp {
    17    
    18    @SuppressWarnings("unchecked")
    19    @Resource(name="baseServiceImpl")
    20    BaseService baseService;
    21    
    22    @Test
    23    public void save(){
    24        Employee employee=new Employee();
    25        employee.setName("张三");
    26        Department department=new Department();
    27        department.setName("软件测试组");
    28        employee.setDepartment(department);
    29        baseService.save(employee);
    30    }
    31    
    32    @SuppressWarnings("unchecked")
    33    @Test
    34    public void query(){
    35        Employee employee=(Employee) baseService.findById(Employee.class, 2);
    36        System.out.println(employee.getId()+"	"+employee.getName()+"	"+employee.getDepartment().getName());
    37    }
    38    
    39 }    

    9.

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4    xmlns:p="http://www.springframework.org/schema/p"
     5    xmlns:aop="http://www.springframework.org/schema/aop"
     6    xmlns:tx="http://www.springframework.org/schema/tx"
     7    xmlns:context="http://www.springframework.org/schema/context"
     8    xsi:schemaLocation="http://www.springframework.org/schema/beans
     9    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    10    http://www.springframework.org/schema/tx
    11    http://www.springframework.org/schema/tx/spring-tx.xsd
    12    http://www.springframework.org/schema/aop
    13    http://www.springframework.org/schema/aop/spring-aop.xsd
    14    http://www.springframework.org/schema/context
    15    http://www.springframework.org/schema/context/spring-context.xsd">
    16    
    17    <context:annotation-config/>
    18    <context:component-scan base-package="com.sj.*"/>
    19    <aop:aspectj-autoproxy/>
    20    
    21    <tx:annotation-driven transaction-manager="transactionManager" />
    22 
    23    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    24        <property name="persistenceUnitName" value="sjPU" />
    25        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"></property>
    26    </bean>
    27    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    28        <property name="entityManagerFactory" ref="entityManagerFactory" />
    29    </bean>
    30 </beans>

    9.

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4    xmlns:p="http://www.springframework.org/schema/p"
     5    xmlns:aop="http://www.springframework.org/schema/aop"
     6    xmlns:tx="http://www.springframework.org/schema/tx"
     7    xmlns:context="http://www.springframework.org/schema/context"
     8    xsi:schemaLocation="http://www.springframework.org/schema/beans
     9    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    10    http://www.springframework.org/schema/tx
    11    http://www.springframework.org/schema/tx/spring-tx.xsd
    12    http://www.springframework.org/schema/aop
    13    http://www.springframework.org/schema/aop/spring-aop.xsd
    14    http://www.springframework.org/schema/context
    15    http://www.springframework.org/schema/context/spring-context.xsd">
    16    
    17    <context:component-scan base-package="com.sj.action"/>
    18    <bean id="defaultAnnotationHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    19    <bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    20        <property name="messageConverters">
    21            <list>
    22                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    23                    <property name="supportedMediaTypes">
    24                        <list>
    25                            <value>text/html;charset=utf-8</value>
    26                            <value>text/xml</value>
    27                            <value>text/plain</value>
    28                        </list>
    29                    </property>
    30                </bean>
    31            </list>
    32        </property>
    33    </bean>
    34    
    35    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    36        <property name="suffix" value=".jsp"></property>
    37        <property name="prefix" value="/"></property>
    38        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    39    </bean>
    40    
    41 </beans>

    10.

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5"
     3    xmlns="http://java.sun.com/xml/ns/javaee"
     4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     6    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7  <welcome-file-list>
     8    <welcome-file>index.jsp</welcome-file>
     9  </welcome-file-list>
    10  
    11  <listener>
    12      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    13  </listener>
    14        <context-param>
    15          <param-name>contextConfigLocation</param-name>
    16          <param-value>/WEB-INF/applicationContext.xml</param-value>
    17      </context-param>
    18  <servlet>
    19      <servlet-name>dispatcherServlet</servlet-name>
    20      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    21      <load-on-startup>1</load-on-startup>
    22  </servlet>
    23  <servlet-mapping>
    24      <servlet-name>dispatcherServlet</servlet-name>
    25      <url-pattern>*.action</url-pattern>
    26  </servlet-mapping>
    27  
    28 </web-app>

    11.src/META-INF/persistence.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <persistence xmlns="http://java.sun.com/xml/ns/persistence"
     3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
     5    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
     6    version="1.0">
     7 
     8    <persistence-unit name="sjPU" transaction-type="RESOURCE_LOCAL">
     9        <provider>org.hibernate.ejb.HibernatePersistence</provider>
    10        <properties>
    11            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    12            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sj" />
    13            <property name="hibernate.connection.username" value="root" />
    14            <property name="hibernate.connection.password" value="root" />
    15            <property name="hibernate.show_sql" value="true" />
    16            <property name="hibernate.format_sql" value="true" />
    17            <property name="hibernate.hbm2ddl.auto" value="update" />
    18        </properties>
    19    </persistence-unit>
    20 
    21 </persistence>

    12.

     1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>雇员信息列表</title>
     8 </head>
     9 <body>
    10    <c:if test="${empty requestScope.list}">
    11        对不起,没有要显示的记录!!!!
    12    </c:if>
    13    <c:if test="${!empty requestScope.list}">
    14        <c:forEach items="${requestScope.list}" var="s">
    15            <c:out value="${s.id}"/>
    16            <c:out value="${s.name}"/>
    17            <c:out value="${s.department.name}"/>
    18            <br/>
    19        </c:forEach>
    20    </c:if>
    21 </body>
    22 </html>

    这里重点关注applicationContext.xml、dispatcherServlet-servlet.xml、EmployeeAction。其中dispatcherServlet-servlet.xml文件的命名规则遵循web.xml中配置的dispatcherServlet servlet的servlet-name属性的值。dispatcherServlet-servlet.xml里面配置了开启SpringMVC的注解解析器以及视图渲染器,和处理response时返回给浏览器的头信息.

  • 相关阅读:
    996工作制是奋斗还是剥削?
    动态链接的PLT与GOT
    The Product-Minded Software Engineer
    缓冲区溢出
    golang的加法比C快?
    C errno是否是线程安全的
    golang 三个点的用法
    GDB 单步调试汇编
    为什么CPU需要时钟这种概念?
    fliebeat配置手册
  • 原文地址:https://www.cnblogs.com/sharpest/p/6118885.html
Copyright © 2011-2022 走看看