我们先看一下把MyBatis 集成到Spring 中要做的几件事情。
为了让大家看起来更直观,这里我们依旧用传统的xml 配置给大家来做讲解,当然使用配置类@Configuration 效果也是一样的,对于Spring 来说只是解析方式的差异。
除了MyBatis 的依赖之外,我们还需要在pom 文件中引入MyBatis 和Spring 整合的jar 包(注意版本!mybatis 的版本和mybatis-spring 的版本有兼容关系)。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.0</version>
</dependency>
然后在Spring 的applicationContext.xml 里面配置SqlSessionFactoryBean,它是用来帮助我们创建会话的,其中还要指定全局配置文件和mapper 映射器文件的路径。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<property name="dataSource" ref="dataSource"/>
</bean>
然后在applicationContext.xml 配置需要扫描Mapper 接口的路径。
在Mybatis 里面有几种方式,第一种是配置一个MapperScannerConfigurer。
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.leon.crud.dao"/>
</bean>
第二种是配置一个<scan>标签:
<mybatis-spring:scan base-package="com.leon.crud.dao"/>
还有一种就是直接用@MapperScan 注解,比如我们在Spring Boot 的启动类上加上一个注解:
@SpringBootApplication
@MapperScan("com.leon.crud.dao")
public class MybaitsApp {
public static void main(String[] args) {
SpringApplication.run(MybaitsApp.class, args);
}
}
这三种方式实现的效果是一样的。