【Spring Boot】整合Mybatis与Mybatis-plus

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

一、整合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开头)等相关信息之外
这个类还完成了SqlSessionFactorySqlSessionTemplate的自动配置

另外还引入了一个类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."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值