SpringBoot-数据访问-整合MyBatis-配置版

news2025/6/9 19:37:47

引入依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>

@ConditionalOnSingleCandidate(DataSource.class)

单一数据源

 SqlSessionFactory: 自动配置好了

  @Bean
  @ConditionalOnMissingBean
  public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
    factory.setDataSource(dataSource);
    factory.setVfs(SpringBootVFS.class);
    //xxxxxxxxxxx
}

DataSource dataSource
factory.setDataSource(dataSource);

数据源


  @Bean
  @ConditionalOnMissingBean
  public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
    ExecutorType executorType = this.properties.getExecutorType();
    if (executorType != null) {
      return new SqlSessionTemplate(sqlSessionFactory, executorType);
    } else {
      return new SqlSessionTemplate(sqlSessionFactory);
    }
  }

 SqlSession:自动配置了 SqlSessionTemplate 组合了SqlSession


  @org.springframework.context.annotation.Configuration
  @Import(AutoConfiguredMapperScannerRegistrar.class)
  @ConditionalOnMissingBean({ MapperFactoryBean.class, MapperScannerConfigurer.class })
  public static class MapperScannerRegistrarNotFoundConfiguration implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
      logger.debug(
          "Not found configuration for registering mapper bean using @MapperScan, MapperFactoryBean and MapperScannerConfigurer.");
    }

  }

 @Import(AutoConfiguredMapperScannerRegistrar.class);

public static class AutoConfiguredMapperScannerRegistrar implements BeanFactoryAware, ImportBeanDefinitionRegistrar {

    private BeanFactory beanFactory;

    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

      if (!AutoConfigurationPackages.has(this.beanFactory)) {
        logger.debug("Could not determine auto-configuration package, automatic mapper scanning disabled.");
        return;
      }

      logger.debug("Searching for mappers annotated with @Mapper");

    //xxxxxxxxxxxxx

    }

}

AnnotationMetadata(注解)

logger.debug("Searching for mappers annotated with @Mapper");

找到所有带有@Mapper的接口

  • Mapper: 只要我们写的操作MyBatis的接口标注了 @Mapper 就会被自动扫描进来

classpath:

classpath类路径在 Spring Boot 中既指程序在打包前的/java/目录加上/resource目录,也指程序在打包后生成的/classes/目录。两者实际上指的是同一个目录,里面包含的文件内容一模一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视图的使用

为什么引入视图&#xff08;Views&#xff09; 如果您读过其他类似的书&#xff0c;可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢&#xff1f; 早期信息系统的设计与开发多采用模块驱动方式&am…

NumPy 秘籍中文第二版:七、性能分析和调试

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; 使用timeit进行性能分析使用 IPython 进行分析安装line_profiler使用line_profiler分析代码具有cProfile扩展名…

【分布式事务AT模式 本地部署Seata服务】分布式事务框架Seata详细讲解

前言 这篇文章我会从0到1详细搭建分布式事务框架seata的使用&#xff0c;那么我们首先要先了解一下什么是分布式事务&#xff1f; 本篇文章是本地启动seata服务并且注册到nacos中&#xff0c;在SpringCloud中整合seata框架请转移下方连接 点我跳转SpringCloud整合seata教程&…

【网络原理】TCP/IP协议(续)

目录 &#x1f525;网络层重点协议&#xff08;IP 协议&#xff09; 一、地址管理 1.如何解决上述地址不够用问题&#xff1f; 2.NAT 机制 2.1 NAPT 2.2 在 NAT 背景下如何通信&#xff1f; 3.IPv6 4.IP地址 4.1 ABCDE类 4.2 子网掩码 4.3 特殊的 IP 地址 二、路由…

传统汽车保险丝盒与智能保险丝盒Efuse的应用

一、传统汽车保险丝盒 1、概述 电气盒是用于提供车辆电源分配和回路保护的电气枢纽。电气盒能简化线束的安装和整车的装配过程&#xff0c;改善系统的整体质量水平&#xff0c;降低成本和减少散乱。 一般传统电气盒分为PFB&#xff08;预保险丝盒&#xff09;&#xff0c;UE…

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…

去互联网大厂卷还是去上升期创业型公司offer二选一?你怎么抉择?

上升期的创业型公司 vs 大厂 如何抉择&#xff1f; 最近总有一些粉丝特别“凡尔赛”的发几个 offer 问我选择哪个&#xff1f;其中比较典型的一个问题就是&#xff1a; “一个是处于上升期的创业型公司 &#xff0c;一个行业大厂&#xff0c;薪资待遇差不多&#xff0c;到底该…

elastissearch——排序结果处理

排序 elasticsearch支持对搜索结果排序&#xff0c;默认是根据相关度算分&#xff08;_score&#xff09;来排序。可以排序字段类型有&#xff1a;keyword类型、数值类型、地理坐标类型、日期类型等。 GET /hotel/_search { "query": { "match_all"…

DC插装式流量阀压力阀

Cartridge Valves 电磁阀 止回阀 运动控制阀 流量控制阀 溢流阀 压力控制阀 顺序阀 梭阀 方向阀 配件 Zero Profile Valves 止回阀 运动控制阀 流量控制阀 溢流阀 梭阀 In-Line Valves 止回阀和梭阀 方向阀 配件 微型系列 AB20S APIDC-30S C10B C10S C10S…

opengl 坐标系

概述 为了将坐标从一个坐标系统转换成另一个坐标&#xff0c;我们需要经历几个变换&#xff08;1&#xff1a;模型 2&#xff1a;观察 3&#xff1a;投影&#xff09;我们的顶点坐标起始于局部坐标&#xff0c;然后变成世界坐标&#xff0c;观察坐标&#xff0c;剪裁坐标 最后以…

BUUCTF-MD5强弱比较-MD5()的万能密码-tornado框架注入-中文电码

第六周 第三次 目录 学习到的知识 1.MD5强弱比较可以都可以使用数组绕过 2.基于MD5()的万能密码 ffifdyop WEB [BJDCTF2020]Easy MD5 ​编辑[护网杯 2018]easy_tornado Crypto 信息化时代的步伐 凯撒&#xff1f;替换&#xff1f;呵呵! Misc 神秘龙卷风 学习到的…

c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法

c/c&#xff1a;数据类型&#xff0c;常量变量&#xff0c;标识符&#xff0c;有符号整型&#xff0c;无符号unsigned&#xff0c;字符类型&#xff0c;字符串类型&#xff0c;实数类型&#xff0c;浮点型&#xff0c;科学计数法 2022找工作是学历、能力和运气的超强结合体&am…

C++ Primer 第7章 类 - 上(零基础学习C++,精简学习笔记)

&#x1f916; 作者简介&#xff1a;努力的clz &#xff0c;一个努力编程的菜鸟 &#x1f423;&#x1f424;&#x1f425; &#x1f440; 文章专栏&#xff1a;C Primer 学习笔记 &#x1f4d4;专栏简介&#xff1a; 本专栏是博主学习 C Primer 的学习笔记&#xff0c;因为…

【NX2023/1847】UG软件安装详细指南教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑&#xff08;小白直接重启稳妥&#xff09;4.重启后继续运行L…

网络威胁情报项目:为什么仍然很疯狂

大约五年前&#xff0c;向首席信息安全官&#xff08; CISO&#xff09;询问他们的网络威胁情报 (CTI) 计划时&#xff0c;得到了两种截然不同的回答。 资源丰富的大型企业正在投资他们的威胁情报计划&#xff0c;目的是为了战术、运营和战略目的更好地实施它。 规模较小、资…

Day942.独立编译调试 -系统重构实战

独立编译调试 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于独立编译调试的内容。 当组件做 独立的版本演进时&#xff0c;如果开发在本地每次修改代码时&#xff0c;都需要进行集成打包验证&#xff0c;反而会影响日常的开发效率。所以如果能够让组件独立进行编译…

Object方法

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 JavaScript系列文章—…

Node.js -- 模块化

1.模块化的基本概念 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层吧系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合&#xff0c;分解和更换的单元。 将代码进行模块化拆分的好处&#xff1a; 提高代码的复用性提高代码的可维护性可以实现按…

元宇宙:新的数字模式——元宇宙会场

一、引言 元宇宙是一个充满无限可能的虚拟空间&#xff0c;人们可以在其中创建和参与各种虚拟场景和体验。元宇宙技术的兴起&#xff0c;为传统的会场提供了一个新的方向。元宇宙会场将线下会场的物理空间转化为虚拟空间&#xff0c;通过数字技术和互联网实现了人们在虚拟环境…