美文网首页
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