mybatis源码阅读(三) 之SqlSessionFactory是如何被初始化的?

本文探讨了在SpringBoot项目中,如何通过自动装配特性初始化SqlSessionFactory。SqlSessionFactoryBean利用FactoryBean接口,解析config和mapper.xml文件,创建Configuration,并存储MappedStatement。同时,SqlSessionDaoSupport的sqlSessionTemplate也在初始化时被注入。
摘要由CSDN通过智能技术生成

SqlSessionFactory是如何被初始化的?

在springboot项目中,我们并没有书写并注入SqlSessionFactory,此时就是通过springboot的自动装配特性,自动装配并注册bean到spring容器中。下面进入正文:
MybatisAutoConfiguration:

@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
   
    SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
    // 数据源
    factory.setDataSource(dataSource);
    factory.setVfs(SpringBootVFS.class);
    if (StringUtils.hasText(this.properties.getConfigLocation())) {
   
    // mybatis全局配置文件位置
factory.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
    }
	// 设置Configuration
    this.applyConfiguration(factory);
    if (this.properties.getConfigurationProperties() != null) {
   
        factory.setConfigurationProperties(this.properties.getConfigurationProperties());
    }
	// 设置插件
    if (!ObjectUtils.isEmpty(this.interceptors)) {
   
        factory.setPlugins(this.interceptors);
    }
	// 设置数据库厂商标识
    if (this.databaseIdProvider != null) {
   
        factory.setDatabaseIdProvider(this.databaseIdProvider);
    }
	// 设置别名包
    if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
   
        factory.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
    }
	// 筛选类型别名的超类。如果没有指定,MyBatis会将从typeAliasesPackage中搜索的所有类作为类型别名处理。
    if (this.properties.getTypeAliasesSuperType(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值