整合前的准备工作




对于pom.xml先删除不必要的
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.slin.edu</groupId><artifactId>ssm</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>ssm Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target></properties><dependencies><!--单元测试jar--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--spring-data-jpa 需要引⼊的jar,start--><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>2.1.8.RELEASE</version></dependency><dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>3.0.1-b04</version></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>javax.el</artifactId><version>2.2.6</version></dependency><!--spring-data-jpa 需要引⼊的jar,end--><!--spring 相关jar,start--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.1.12.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.13</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.12.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>5.1.12.RELEASE</version></dependency><!--spring对orm框架的⽀持包--><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.1.12.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.1.12.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.1.12.RELEASE</version></dependency><!--spring 相关jar,end--><!--hibernate相关jar包,start--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.4.0.Final</version></dependency><!--hibernate对jpa的实现jar--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>5.4.0.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><!-- 配置 Spring 的配置⽂件--><version>5.4.0.Final</version></dependency><!--hibernate相关jar包,end--><!--mysql 数据库驱动jar--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version></dependency><!--spring-test--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>11</source><target>11</target></configuration></plugin><!--要把tomcat的插件引入进来--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><!--指定端口号--><path>/</path><!--指定上下文--></configuration></plugin></plugins></build></project>
开发相应的dao层(回顾Mybatis)
1、添加类和接口

2、创建一个和接口一样路径及名字的xml文件。
1、xml的命名空间和接口的全限定类名一致
2、sql语句的id要和方法名一致
开发相应的service层(回顾Spring)

配置Spring的配置文件
整合目标 数据库连接池以及事务管理都交给Spring容器来完成

SqlSessionFactory对象应该放到Spring容器中作为单例对象管理 (任务一第三点)

原来的sqlMapConfig.xml就是上面那样,需要数据源,和Mapper.xml的全路径
Mapper动态代理对象交给Spring管理,我们从Spring容器中直接获得Mapper的代理对象

完整的applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx.xsd
">
     <!--包扫描-->
    <context:component-scan base-package="com.slin.edu"/>
    <!--整合目标 数据库连接池以及事务管理都交给Spring容器来完成-->
    <!--引入外部资源文件-->
    <context:property-placeholder  location="classpath:jdbc.properties"/>
    <!--第三⽅jar中的bean定义在xml中-->
    <bean id="dataSource"  class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
     <!--事物管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--添加注解驱动(才可以在添加注解事物,才可以到service层添加事物控制)-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <!--SqlSessionFactory对象应该放到Spring容器中作为单例对象管理
     原来mybaits中sqlSessionFactory的构建是需要素材的:SqlMapConfig.xml中的内容
    -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--别名映射扫描-->
        <property name="typeAliasesPackage" value="com.slin.edu.pojo"/>
        <!--数据源dataSource-->
        <property name="dataSource" ref="dataSource"/>
     </bean>
    <!--Mapper动态代理对象交给Spring管理,我们从Spring容器中直接获得Mapper的代理对象
       Mybatis中是通过工厂来产生会话,通过会话获取getMapper代理对象
     -->
    <!--通过扫描器,扫描mapper接口,成代理对象存储在ioc容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--需要扫描的是哪个包。也就是mapper接口包路径,mapper包下面都会扫描生成代理对象存在ioc中-->
        <property name="basePackage" value="com.slin.edu.mapper"/>
        <!--以前是通过工厂产生会话,通过会话生成代理对象。现在也还是需要去获取代理对象,通过sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName"  value="sqlSessionFactory"/>
    </bean>
</beans>
测试类

到此Mybatis和Spring的整合OK
接下来将SpringMVC整合进来
把SpringMVC的入门案例整合进来即可(在已有工程基础之上开发一个SpringMVC入门案例)
1、先在pom.xml引入坐标
     <!--SpringMVC-->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.12.RELEASE</version>
      </dependency>
      <!--jsp-api&servlet-api-->
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>
      <!--页面使用jstl表达式-->
      <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>
      <dependency>
          <groupId>taglibs</groupId>
          <artifactId>standard</artifactId>
          <version>1.1.2</version>
      </dependency>
      <!--json数据交互所需jar,start-->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.9.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.9.0</version>
      </dependency>
      <!--json数据交互所需jar,end-->
2、在web.xml中添加DispatcherServlet

3、springmvc.xml文件的配置

4、Controller层中调用service层。

5、将Spring框架启动,实现ssm三个框架启动
SpringMVC是如何启动呢?
是通过web.xml中的Servlet初始化,加载springmvc.xml文件。
在springmvc.xml中只是添加了Controller的扫描。
service,和dao的扫描是Spring在扫,但是Spring没启动。如果要Spring启动,需要
在servlet中还要配置上一个监听器,
6、部署发布

将applicationContext.xml拆分为dao层和service层
为了让后期管理更方便可以
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!--包扫描-->
    <context:component-scan base-package="com.slin.edu.service"/>
     <!--事物管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--添加注解驱动(才可以在添加注解事物,才可以到service层添加事物控制)-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!--包扫描-->
    <context:component-scan base-package="com.slin.edu.mapper"/>
    <!--整合目标 数据库连接池以及事务管理都交给Spring容器来完成-->
    <!--引入外部资源文件-->
    <context:property-placeholder  location="classpath:jdbc.properties"/>
    <!--第三⽅jar中的bean定义在xml中-->
    <bean id="dataSource"  class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--SqlSessionFactory对象应该放到Spring容器中作为单例对象管理
     原来mybaits中sqlSessionFactory的构建是需要素材的:SqlMapConfig.xml中的内容
    -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--别名映射扫描-->
        <property name="typeAliasesPackage" value="com.slin.edu.pojo"/>
        <!--数据源dataSource-->
        <property name="dataSource" ref="dataSource"/>
     </bean>
    <!--Mapper动态代理对象交给Spring管理,我们从Spring容器中直接获得Mapper的代理对象
       Mybatis中是通过工厂来产生会话,通过会话获取getMapper代理对象
     -->
    <!--通过扫描器,扫描mapper接口,成代理对象存储在ioc容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--需要扫描的是哪个包。也就是mapper接口包路径,mapper包下面都会扫描生成代理对象存在ioc中-->
        <property name="basePackage" value="com.slin.edu.mapper"/>
        <!--以前是通过工厂产生会话,通过会话生成代理对象。现在也还是需要去获取代理对象,通过sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName"  value="sqlSessionFactory"/>
    </bean>
</beans>
                    