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就整合成功了
网友评论