Spring整合Mybatis(环境搭建)

Spring整合Mybatis

疑问:我为啥要整合?Spring、mybatis分开使用不是更香,整合岂不是自讨没趣!

回顾:Spring帮你管理bean通过ApplicationContent来getbean

​ mybatis呢mapper.xml替代了daoimpl

目的:通过把mybatis的配置注册成bean可以更好的管理,所以说Spring包含万物。

准备环境

  1. 新建立一个web项目
    image

  2. 导入包

image

  1. 建立resource文件夹------>并且配置applicationxml

image

<?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:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation=
    "http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.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
     
      ">
       
       
                                                              

        
</beans>

我们来看一份正常的mybatis-config.xml配置文件,并不需要关注具体只需要看到两个标签

  1. <environments>标签
  2. <mappers>标签
<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>
  <!--开启二级缓存  -->
  <settings>
   <setting name="cacheEnabled" value="true"/>
   <setting name="useGeneratedKeys" value="true"/>
  </settings>
 
  <environments default="development">
     <environment id="development">
         <!-- 配置JDBC事务控制,由mybatis进行管理 -->
         <transactionManager type="JDBC"></transactionManager>
         <!-- 配置数据源,采用dbcp连接池 -->
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
             <property name="url" value="jdbc:mysql://localhost:3306/survey?useUnicode=true&amp;characterEncoding=utf8"/>
            <property name="username" value="root"/>
            <property name="password" value="747452"/>
         </dataSource>
    </environment>
 </environments>
 
 
 <!-- 加载mapper映射文件 -->    
 <mappers>
<mapper resource="dao/VoteUser.xml"/>
<mapper resource="dao/VoteMapper.xml"/>  
 </mappers>
</configuration>
  1. 把envirments、mappers两个标签交给Spring注册成bean

    <!-- 配置数据源 -->
       <!--这里的org.apache.commons.dbcp.BasicDataSource类是jar包里面的类   ,destroy-method定义数据库关闭的方式-->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <!-- 参数就是自己的数据库参数 -->
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>
    
  2. 再次回顾一下得到实现类需要(目的:也就是把mappers为变量注册成SqlSessionFactory)

    SqlSessionfactory类.opensqlsession()我们需要注册SqlSessionFactory类
    
    <!-- 配置sqlSessionFactory,SqlSessionFactoryBean是用来产生sqlSessionFactory的 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 加载mybatis的全局配置文件,放在classpath下的mybatis文件夹中 -->
            <property name="configLocation" value="mybatis/mybatis-configuration.xml" />
            <!-- 加载数据源,使用上面配置好的数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean>
    
  3. 思考为啥要把envirments注册成bean我直接把sqlSessionFactory注册成bean就好了。

    答:涉及原理session创建的过程有三步

    • 创建事务管理工厂

    • 创建事务管理器

    • 建立Execute类(该类执行sql)

      Spring把数据源注册成bean注入到sqlSessionFactory中

  4. 我们回过头看看mybatis-config.xml文件(去除envirment)

    <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      
    <configuration>
     <!--现在它只剩下设置而已了:其他的都已经变成了bean  -->
      <settings>
       <setting name="cacheEnabled" value="true"/>
       <setting name="useGeneratedKeys" value="true"/>
      </settings>
    
    </configuration>
    

    到此环境准备完毕了!
    接下里只需要再获得session就可以编写业务了。

posted @ 2021-10-26 23:43  旅祸少年  阅读(117)  评论(0编辑  收藏  举报