當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
基于注解的SpringMVC整合JPA
生活随笔
收集整理的這篇文章主要介紹了
基于注解的SpringMVC整合JPA
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
點我下載工程代碼
實體類
Department
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.class, 2);
??????? 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> 這里重點關(guān)注applicationContext.xml、dispatcherServlet-servlet.xml、EmployeeAction。其中dispatcherServlet-servlet.xml文件的命名規(guī)則遵循web.xml中配置的dispatcherServlet servlet的servlet-name屬性的值。dispatcherServlet-servlet.xml里面配置了開啟SpringMVC的注解解析器以及視圖渲染器,和處理response時返回給瀏覽器的頭信息.
點我下載工程代碼 posted on 2010-11-02 10:47 雪山飛鵠 閱讀(6086) 評論(6)? 編輯? 收藏 所屬分類: spring 、JPA
總結(jié)
以上是生活随笔為你收集整理的基于注解的SpringMVC整合JPA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国交建是国企吗
- 下一篇: CXF客户端配置请求超时限制-Socke