spring如何整合mybatis
时间: 2024-05-07 20:21:08 浏览: 5
Spring整合MyBatis的过程如下:
1. 首先在pom.xml中添加MyBatis和MyBatis-Spring的依赖。
```xml
<!-- MyBatis 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MyBatis-Spring 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
```
2. 配置数据源。可以使用Spring提供的数据源,如Druid或HikariCP,也可以使用其他的数据源。
3. 配置SqlSessionFactoryBean。这个Bean负责创建SqlSession对象。
```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
```
在这个配置中,我们指定了数据源、MyBatis的配置文件和Mapper映射文件的位置。
4. 配置MapperScannerConfigurer。这个Bean负责扫描Mapper映射接口,并将其注册到Spring容器中。
```xml
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"/>
</bean>
```
在这个配置中,我们指定了Mapper接口所在的包。
5. 配置事务管理器。MyBatis-Spring提供了两个事务管理器:DataSourceTransactionManager和JdbcTransactionManager。DataSourceTransactionManager是使用数据源进行事务管理,而JdbcTransactionManager是使用JDBC连接进行事务管理。
```xml
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
```
在这个配置中,我们使用了DataSourceTransactionManager。
6. 最后,在Spring配置文件中添加MyBatis的命名空间。
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-2.0.xsd">
<!-- 配置 MyBatis -->
<mybatis:scan base-package="com.example.mapper"/>
</beans>
```
这个配置指定了MyBatis的命名空间,并使用了mybatis:scan元素来扫描Mapper接口所在的包。
通过以上步骤,就可以将Spring和MyBatis整合起来了。