美文网首页
spring+mybatis整合

spring+mybatis整合

作者: 测试你个头 | 来源:发表于2017-09-07 21:11 被阅读0次

spring+mybatis框架是当前非常常用的框架,2者如何通过配置整合在一起?如果再采用三方的数据源框架比如druid、tddl等,又需要加上那些配置

一、POM文件引入依赖:spring+mybatis+mysql

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        
        <!-- 数据源依赖,如果换了其他的数据源,更换依赖即可 -->
        <dependency>
            <groupId>com.taobao.tddl</groupId>
            <artifactId>tddl-client</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.taobao.diamond</groupId>
            <artifactId>diamond-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <!-- mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>

二、在resource目录下加入以下2个文件:

spring的applicationContext.xml配置:

通用的spring配置,没有什么特别配置,引入了mybatis-spring.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: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/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.oms"></context:component-scan>

    <import resource="classpath*:mybatis-spring.xml"/>
</beans>
mybatis-spring.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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"
       default-autowire="byName">

    <!--数据源配置-->
    <bean id="ocsUnitDataSource" class="com.taobao.tddl.client.jdbc.TDataSource"
          init-method="init">
        <property name="appName" value="xxxx"/>
        <property name="appRuleFile" value="classpath:tddl-rule.xml"></property>
    </bean>
    
    <!--SqlSessionFactoryBean配置-->
    <bean id="sqlSessionFactoryOcsUnit" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="ocsUnitDataSource"/>
        <!-- mapper配置文件的路径,类似MyBatis的mappers配置 -->
        <property name="mapperLocations" value="classpath:mappers/ocsunit/*.xml"/>
    </bean>

    <!-- mapper接口扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.oms.dao.mapper.ocsunit"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryOcsUnit"/>
    </bean>

    <!-- 基于注解的事务处理 -->
    <bean id="transactionManagerOcsUnit" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="ocsUnitDataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManagerOcsUnit"/>
</beans>

分别解释几个配置的用途:

  • 数据源配置:用于连接数据库(这里可以是jdbc,druid,tddl等等,示例中用的是tddl),如果是jdbc、druid,这里需要配置数据库的url,用户名,密码。
    <!--数据源1配置-->
    <bean id="ocsUnitDataSource" class="com.taobao.tddl.client.jdbc.TDataSource"
          init-method="init">
        <property name="appName" value="xxxx"/>
        <property name="appRuleFile" value="classpath:tddl-rule.xml"></property>
    </bean>
  • SqlSessionFactoryBean配置:这是mybatis-spring需要的配置,用于创建数据库session
    <!--SqlSessionFactoryBean配置-->
    <bean id="sqlSessionFactoryOcsUnit" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="ocsUnitDataSource"/>
        <!-- mapper配置文件的路径,类似MyBatis的mappers配置 -->
        <property name="mapperLocations" value="classpath:mappers/ocsunit/*.xml"/>
    </bean>

dataSource,配置数据源,通过ref引用数据源的id。
mapperLocations,配置需要加载的mapper配置文件。

  • 配置mapper接口的扫描
    <!-- mapper接口扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.oms.dao.mapper.ocsunit"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryOcsUnit"/>
    </bean>

org.mybatis.spring.mapper.MapperScannerConfigurer配置mapper接口的自动扫描,用于自动装配。
basePackage:mapper接口所在的package。
sqlSessionFactoryBeanName:引用前面配置的SqlSessionFactoryBean实例的id。

mybatis自身还需要如下的约定配置:

mapper配置

前面配置SqlSessionFactoryBean指定了mapper配置文件路径:


mapper接口

前面配置的mapper扫描的package(com.oms.dao.mapper.ocsunit)下增加mapper接口


这里无需配置mapper.xml和mapper.java的关联关系,保证名称一致即可自动关联(约定>配置原则)

完成上面的配置,spring+mybatis就整合成功了

相关文章

网友评论

      本文标题:spring+mybatis整合

      本文链接:https://www.haomeiwen.com/subject/uclwjxtx.html