一、整合mybatis
博主之前也写过Spring整合Mybatis相关的博客
【Spring】spring整合mybatis
那么Spring Boot框架是如何整合Mybatis的呢?
我们直接去Mybatis的git官网地址:https://github.com/mybatis
进入spring-boot-starter这个模块,然后切换Tag到最新的,进入mybatis-spring-boot-starter这个模块
接着就可以在pom文件中找到这个启动类的坐标信息了

- 首先引入启动器相关依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>

然后我们还是照惯例分析一下相关的自动配置类MybatisAutoConfiguration
可以发现除了基本的配置绑定类(配置项以mybatis开头)等相关信息之外
这个类还完成了SqlSessionFactory和SqlSessionTemplate的自动配置
另外还引入了一个类AutoConfiguredMapperScannerRegistrar,它会自动扫描@Mapper标注的接口,将这些接口认定是操作mybatis的接口
@Configuration
@ConditionalOnClass({
SqlSessionFactory.class, SqlSessionFactoryBean.class})
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties({
MybatisProperties.class})
@AutoConfigureAfter({
DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class})
public class MybatisAutoConfiguration implements InitializingBean {
...
// 自动注入SqlSessionFactory这个bean
@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
}
...
// 自动注入SqlSessionTemplate,它组合了SqlSession
@Bean
@ConditionalOnMissingBean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
ExecutorType executorType = this.properties.getExecutorType();
return executorType != null ? new SqlSessionTemplate(sqlSessionFactory, executorType) : new SqlSessionTemplate(sqlSessionFactory);
}
...
public static class AutoConfiguredMapperScannerRegistrar implements BeanFactoryAware, EnvironmentAware, ImportBeanDefinitionRegistrar {
private BeanFactory beanFactory;
private Environment environment;
public AutoConfiguredMapperScannerRegistrar() {
}
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
if (!AutoConfigurationPackages.has(this.beanFactory)) {
MybatisAutoConfiguration.logger.debug("Could not determine auto-configuration package, automatic mapper scanning disabled."

本文详细介绍了如何在SpringBoot中整合Mybatis和Mybatis-Plus,包括引入依赖、配置自动扫描、编写Mapper接口及SQL映射文件,并展示了基本的CRUD操作。同时对比了Mybatis与Mybatis-Plus的区别,如Mybatis-Plus提供基类实现简单CRUD。
最低0.47元/天 解锁文章
1597

被折叠的 条评论
为什么被折叠?



