通过SpringMVC整合基于注解的JPA的实例教程代码下载

来源:互联网 发布:淘宝客服职位描述 编辑:程序博客网 时间:2024/06/01 09:59

实体类
原创整理不易,转载请注明出处:通过SpringMVC整合基于注解的JPA的实例教程代码下载

代码下载地址:http://www.zuidaima.com/share/1751862510177280.htm

Department

package com.zuidaima.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.zuidaima.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.zuidaima.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.zuidaima.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.zuidaima.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.zuidaima.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时返回给浏览器的头信息.
点我下载工程代码

3 0
原创粉丝点击