Spring4+SpringMVC4+hibernate4整合

刺骨的言语ヽ痛彻心扉 2022-03-07 02:48 734阅读 0赞

源码下载:https://github.com/rj2017211811/springmvc-hibernate
1.项目的目录和jar包
在这里插入图片描述
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JqMjAxNzIxMTgxMQ_size_16_color_FFFFFF_t_70 1
在这里插入图片描述
2.web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  3. <context-param>
  4. <param-name>contextConfigLocation</param-name>
  5. <param-value>classpath:beans.xml</param-value>
  6. </context-param>
  7. <listener>
  8. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  9. </listener>
  10. <servlet>
  11. <servlet-name>action</servlet-name>
  12. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  13. <init-param>
  14. <!-- 把springmvc的配置文件放在类路径下,配置文件默认是放在/WEB-INF/下的 -->
  15. <param-name>contextConfigLocation</param-name>
  16. <param-value>classpath:spring-mvc.xml</param-value>
  17. </init-param>
  18. <load-on-startup>1</load-on-startup>
  19. </servlet>
  20. <servlet-mapping>
  21. <servlet-name>action</servlet-name>
  22. <url-pattern>/</url-pattern>
  23. </servlet-mapping>
  24. <display-name>springmvcdb</display-name>
  25. <welcome-file-list>
  26. <welcome-file>index.html</welcome-file>
  27. <welcome-file>index.htm</welcome-file>
  28. <welcome-file>index.jsp</welcome-file>
  29. <welcome-file>default.html</welcome-file>
  30. <welcome-file>default.htm</welcome-file>
  31. <welcome-file>default.jsp</welcome-file>
  32. </welcome-file-list>
  33. </web-app>

3.spring-mvc.xml文件:配置spring-mvc

  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:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  8. http://www.springframework.org/schema/mvc
  9. http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context-4.2.xsd">
  12. <!-- 自动扫描 -->
  13. <context:component-scan
  14. base-package="per.czt.springmvc.web.controller,test" />
  15. <!-- 注解驱动 -->
  16. <mvc:annotation-driven />
  17. <!-- 资源管理 -->
  18. <mvc:resources location="/resources/"
  19. mapping="/resources/**"></mvc:resources>
  20. <mvc:resources location="/upload/" mapping="/upload/**"></mvc:resources>
  21. <!-- 上传文件解析器 -->
  22. <!-- 设置上传文件最大值 1M=1*1024*1024(B)=1048576 bytes -->
  23. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  24. <property name="defaultEncoding" value="utf-8"></property>
  25. <property name="maxUploadSize" value="10485760000"></property>
  26. <property name="maxInMemorySize" value="40960"></property>
  27. </bean>
  28. <!-- 内部资源视图解析器 prefix+logicName+suffix /WEB-INF/jsps+index+.jsp -->
  29. <bean id="internalResourceViewResolver"
  30. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  31. <!-- 前缀 -->
  32. <property name="prefix" value="/WEB-INF/jsps/" />
  33. <!-- 后缀 -->
  34. <property name="suffix" value=".jsp" />
  35. </bean>
  36. </beans>

4.beans.xml文件:配置hibernate

  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:context="http://www.springframework.org/schema/context"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xmlns:aop="http://www.springframework.org/schema/aop"
  8. xmlns:jaxws="http://cxf.apache.org/jaxws"
  9. xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  10. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  11. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  13. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  14. <context:component-scan base-package="per.czt.springmvc.dao,per.czt.springmvc.service" />
  15. <!-- 开启注释处理器 -->
  16. <context:annotation-config />
  17. <!-- 配置数据源 -->
  18. <!-- 配置数据源 -->
  19. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
  20. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  21. <property name="url" value="jdbc:mysql://localhost:3306/springmvcdb?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8"></property>
  22. <property name="username" value="root"></property>
  23. <property name="password" value="123456"></property>
  24. </bean>
  25. <!-- 开启文件上 -->
  26. <bean id="sessionFactory"
  27. class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  28. <property name="dataSource"><ref bean="dataSource" /></property>
  29. <!-- 扫描实体(pojo) -->
  30. <property name="namingStrategy">
  31. <bean class="org.hibernate.cfg.ImprovedNamingStrategy"></bean>
  32. </property>
  33. <property name="hibernateProperties">
  34. <props>
  35. <!-- <prop key="hibernate.show_sql">org.hibernate.dialect.MySQLInnoDBDialect</prop> -->
  36. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  37. <prop key="hibernate.show_sql">true</prop>
  38. <!-- <prop key="hibernate.format_sql">true</prop>-->
  39. <!-- <prop key="hibernate.hbm2ddl.auto">update</prop>-->
  40. </props>
  41. </property>
  42. <!-- 自动扫描实体包 -->
  43. <property name="mappingDirectoryLocations">
  44. <list>
  45. <value>classpath:per/czt/springmvc/domain</value>
  46. </list>
  47. </property>
  48. </bean>
  49. <bean id="personDao" class="per.czt.springmvc.dao.PersonDaoImpl">
  50. <property name="sessionFactory" ref="sessionFactory" />
  51. </bean>
  52. <!-- 事务管理器 -->
  53. <bean id="transactionManager"
  54. class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  55. <property name="sessionFactory" ref="sessionFactory" />
  56. </bean>
  57. <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
  58. <!-- spring事物管理 -->
  59. <tx:attributes>
  60. <tx:method name="add*" />
  61. <tx:method name="save*" />
  62. <tx:method name="Save*" />
  63. <tx:method name="update*" />
  64. <tx:method name="modify*" />
  65. <tx:method name="edit*" />
  66. <tx:method name="delete*" />
  67. <tx:method name="remove*" />
  68. <tx:method name="change*" />
  69. <tx:method name="repair" />
  70. <tx:method name="deleteAndRepair" />
  71. <tx:method name="login*" />
  72. <tx:method name="get*" propagation="SUPPORTS" />
  73. <tx:method name="find*" propagation="SUPPORTS" />
  74. <tx:method name="load*" propagation="SUPPORTS" />
  75. <tx:method name="search*" propagation="SUPPORTS" />
  76. <tx:method name="datagrid*" propagation="SUPPORTS" />
  77. <tx:method name="*" propagation="SUPPORTS" />
  78. <!-- 为hibernate添加事物管理 -->
  79. <tx:method name="get*" propagation="REQUIRED" />
  80. <tx:method name="update*" propagation="REQUIRED"/>
  81. <tx:method name="up*" propagation="REQUIRED" />
  82. <tx:method name="delete*" propagation="REQUIRED"/>
  83. <tx:method name="count*" propagation="REQUIRED" read-only="true" />
  84. <tx:method name="find*" propagation="REQUIRED" read-only="true" />
  85. <tx:method name="list*" propagation="REQUIRED" read-only="true" />
  86. <tx:method name="*" propagation="REQUIRED" />
  87. </tx:attributes>
  88. </tx:advice>
  89. <!-- 切入点 -->
  90. <aop:config proxy-target-class="true">
  91. <aop:pointcut id="transactionPointcut" expression="execution(* per.czt.springmvc.service.*.*(..))" />
  92. <aop:advisor pointcut-ref="transactionPointcut"
  93. advice-ref="transactionAdvice" />
  94. </aop:config>
  95. <!-- 注解方式配置事物 -->
  96. <tx:annotation-driven transaction-manager="transactionManager"/>
  97. <!-- <tx:annotation-driven transaction-manager="transactionManager1"/> -->
  98. </beans>

5.person对象和Person.hbm.xml文件(pojo对象与数据库中的表一一对应)
Person.class

  1. package per.czt.springmvc.domain;
  2. public class Person {
  3. private Integer id;
  4. private String name;
  5. private Integer age;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public Integer getAge() {
  19. return age;
  20. }
  21. public void setAge(Integer age) {
  22. this.age = age;
  23. }
  24. }

Person.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 映射文件需要dtd指定格式 -->
  3. <!DOCTYPE hibernate-mapping PUBLIC
  4. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  5. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  6. <hibernate-mapping package="per.czt.springmvc.domain">
  7. <class name="Person" lazy="true" table="person">
  8. <id name="id" column="id" type="java.lang.Integer">
  9. <generator class="identity"></generator>
  10. </id>
  11. <property name="name" type="java.lang.String">
  12. <column name="name" />
  13. </property>
  14. <property name="age" type="java.lang.Integer">
  15. <column name="age" />
  16. </property>
  17. </class>
  18. </hibernate-mapping>

6.dao层:定义一个接口,然后实现接口,获取sessionFactory(在bean.xml配置bean)实现对数据库的操作
PersonDao

  1. package per.czt.springmvc.dao;
  2. import java.util.List;
  3. import per.czt.springmvc.domain.Person;
  4. public interface PersonDao {
  5. public List<Person> listAll(String hql);
  6. public Person getById(Integer id);
  7. public void saveOrUpdate(Person p);
  8. public void deleteById(Integer id);
  9. }

PersonDaoImpl

  1. package per.czt.springmvc.dao;
  2. import java.util.List;
  3. import javax.annotation.Resource;
  4. import org.hibernate.SessionFactory;
  5. import org.springframework.stereotype.Repository;
  6. import org.springframework.transaction.annotation.Transactional;
  7. import per.czt.springmvc.domain.Person;
  8. @Repository("personDao")
  9. public class PersonDaoImpl implements PersonDao {
  10. private SessionFactory sessionFactory;
  11. public SessionFactory getSessionFactory() {
  12. return sessionFactory;
  13. }
  14. public void setSessionFactory(SessionFactory sessionFactory) {
  15. this.sessionFactory = sessionFactory;
  16. }
  17. @Override
  18. public List<Person> listAll(String hql) {
  19. System.out.println("sessionFactory:"+sessionFactory);
  20. System.out.println("hql:"+hql);
  21. System.out.println(" sessionFactory.getCurrentSession():"+ sessionFactory.getCurrentSession());
  22. List<Person> personList=(List<Person>) sessionFactory.getCurrentSession().createQuery(hql).list();
  23. System.out.println("personList:"+personList.size());
  24. return personList;
  25. }
  26. @Override
  27. public Person getById(Integer id) {
  28. return (Person)sessionFactory.getCurrentSession().get(Person.class, id);
  29. }
  30. @Override
  31. public void saveOrUpdate(Person p) {
  32. sessionFactory.getCurrentSession().saveOrUpdate(p);
  33. }
  34. @Override
  35. public void deleteById(Integer id) {
  36. sessionFactory.getCurrentSession().delete(this.getById(id));
  37. }
  38. }

7.servic层:对dao层的结果处理,这里也是接口调用
PersonService

  1. package per.czt.springmvc.service;
  2. import java.util.List;
  3. import per.czt.springmvc.domain.Person;
  4. public interface PersonService {
  5. public List<Person> listAll(String hql);
  6. public Person getById(Integer id);
  7. public void saveOrUpdate(Person p);
  8. public void deleteById(Integer id);
  9. }

PersonServiceImpl

  1. package per.czt.springmvc.service;
  2. import java.util.List;
  3. import javax.annotation.Resource;
  4. import org.springframework.stereotype.Service;
  5. import per.czt.springmvc.dao.PersonDao;
  6. import per.czt.springmvc.dao.PersonDaoImpl;
  7. import per.czt.springmvc.domain.Person;
  8. @Service("personService")
  9. public class PersonServiceImpl implements PersonService {
  10. @Resource(name="personDao")
  11. private PersonDao personDao;
  12. public PersonDao getPersonDao() {
  13. return personDao;
  14. }
  15. public void setPersonDao(PersonDao personDao) {
  16. this.personDao = personDao;
  17. }
  18. @Override
  19. public List<Person> listAll(String hql) {
  20. System.out.println("personDao:"+personDao);
  21. return personDao.listAll(hql);
  22. }
  23. @Override
  24. public Person getById(Integer id) {
  25. // TODO Auto-generated method stub
  26. return personDao.getById(id);
  27. }
  28. @Override
  29. public void saveOrUpdate(Person p) {
  30. personDao.saveOrUpdate(p);
  31. }
  32. @Override
  33. public void deleteById(Integer id) {
  34. personDao.deleteById(id);
  35. }
  36. }

8.controller层:调用service,并且将结果显示到view层,即jsp页面
PersonController

  1. package per.czt.springmvc.web.controller;
  2. import java.util.List;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import per.czt.springmvc.domain.Person;
  9. import per.czt.springmvc.service.PersonService;
  10. @Controller
  11. @RequestMapping("/person")
  12. public class PersonController {
  13. private PersonService personService;
  14. @RequestMapping("/listAll")
  15. public String listAll(Model model)
  16. {
  17. ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
  18. personService=(PersonService) ac.getBean("personService");
  19. System.out.println("personService1:"+personService);
  20. System.out.println("personService:"+personService);
  21. List<Person> personList=personService.listAll("from Person");
  22. System.out.println("personList.size()"+personList);
  23. model.addAttribute(personList);
  24. return "person/personList";
  25. }
  26. }

9.view层:显示controller层返回的结果
person.jsp(在WEB-INF/person下)

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Insert title here</title>
  9. </head>
  10. <body>
  11. <table>
  12. <tbody>
  13. <tr>
  14. <th>id</th>
  15. <th>name</th>
  16. <th>age</th>
  17. </tr>
  18. <c:forEach items="${personList }" var="person">
  19. <tr>
  20. <td>${person.id }</td>
  21. <td>${person.name }</td>
  22. <td>${person.age }</td>
  23. </tr>
  24. </c:forEach>
  25. </tbody>
  26. </table>
  27. </body>
  28. </html>

index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <a href="${pageContext.request.contextPath }/person/listAll.action">显示列表</a>
  11. </body>
  12. </html>

10.在index.jsp点击显示列表,即可显示所有person了

发表评论

表情:
评论列表 (有 0 条评论,734人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring4 hibernate4(5) 整合

    纸上得来终觉浅 1.前面学了Spring具有两个重要特性,IOC和AOP,利用这些特性可以优化代码框架; 既然如此,那么在使用Hibernate时,就可以利用Spring框架

    相关 Mybatis3+Spring4+SpringMVC4 整合

    首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。 然后我们就细细的一步一步来整合。 1 创建一个We

    相关 Mybatis3+Spring4+SpringMVC4 整合【转】

    首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。 然后我们就细细的一步一步来整合。 1 创建一个We