当前位置: 首页 > news >正文

Spring Boot 进阶-详解Spring Boot整合数据库

在这里插入图片描述
  在之前的例子中,我们介绍了如何在Spring Boot 框架中添加数据源配置。这篇文章我们来详细介绍一下如何整合Mybatis框架。

整合Mybatis框架

  还是按照之前的套路,我们要整合Mybatis框架,首先需要加载对应的场景启动器。这里我们引入由Mybatis提供的整合Spring Boot的场景启动器。

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

  第二步,我们来研究一下对应的自动配置类MybatisAutoConfiguration,代码如下

@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class })
public class MybatisAutoConfiguration implements InitializingBean {

  这里通过自动配置类加载的配置类是MybatisProperties,它的配置前缀如下代码所示

@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {public static final String MYBATIS_PREFIX = "mybatis";

  从代码中可以看出它是以mybatis开头的。也就是说我们在全局配置文件中需要通过mybatis开头的配置来对其进行属性绑定。在其配置类中有如下几个配置项需要我们注意。

/*** Location of MyBatis xml config file.*/// 配置 Mybatis.xml的加载路径private String configLocation;/*** Locations of MyBatis mapper files.*/// 配置Mapper文件映射路径private String[] mapperLocations;/*** Packages to search type aliases. (Package delimiters are ",; \t\n")*/// 实体类包的别名private String typeAliasesPackage;/*** The super class for filtering type alias. If this not specifies, the MyBatis deal as type alias all classes that* searched from typeAliasesPackage.*/private Class<?> typeAliasesSuperType;/*** Packages to search for type handlers. (Package delimiters are ",; \t\n")*/private String typeHandlersPackage;

  这里需要注意的配置有如下几个,基本上我们其他的配置也少有用到。

# MyBatis配置
mybatis:# 搜索指定包别名typeAliasesPackage: com.ruoyi.**.domain# 配置mapper的扫描,找到所有的mapper.xml映射文件mapperLocations: classpath*:mapper/**/*Mapper.xml# 加载全局的配置文件configLocation: classpath:mybatis/mybatis-config.xml

  在之前演示配置相关内容的时候我们也对其源码进行过分析,这里需要注意的一点就是如下的一段代码

@Bean@ConditionalOnMissingBeanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean factory = new SqlSessionFactoryBean();factory.setDataSource(dataSource);

  我们会看到这里如果我们没有特殊去设置SqlSessionFactory配置的时候,会自动注入默认的Factory进行配置,但是在一般情况下,我们都需要自定义一个SqlSessionFactory。代码如下。

@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");String mapperLocations = env.getProperty("mybatis.mapperLocations");String configLocation = env.getProperty("mybatis.configLocation");typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);VFS.addImplClass(SpringBootVFS.class);final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);sessionFactory.setTypeAliasesPackage(typeAliasesPackage);sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));return sessionFactory.getObject();}

  上面介绍了Mybatis的数据库的配置方式。结合之前讲解配置原理中引入的Mybatis相关配置源码信息,我们可以更好的理解Mybatis在配置中相关的配置内容


http://www.mrgr.cn/news/45087.html

相关文章:

  • ASR的King:我又回来了,更小,且更快——openai/whisper-large-v3-turbo
  • 【C++堆(优先队列)】2233. K 次增加后的最大乘积|1685
  • 深度优先搜索与并查集
  • Windows VSCode 配置 Java 环境 (Maven)
  • Steam Deck掌机可装“黑苹果” 开发者成功安装macOS 15 Sequoia
  • 织物布匹疵点检测数据集,布匹缺陷检测数据集 标注工具:LabelImg 数量:已标注1084张(5类);未标注:2000余张
  • Vue 3 中实现懒加载功能
  • 数据结构——优先级队列(堆)
  • python画图|曲线动态输出基础教程
  • 什么是安全运营中心 SOC?
  • 第三课 Vue中的方法的定义及事件绑定指令
  • 线性代数入门指南
  • 『网络游戏』制作提示弹窗UI【03】
  • 线性代数入门
  • 正确理解协程
  • 读数据工程之道:设计和构建健壮的数据系统02数据工程师
  • 【星闪开发连载】SLE_UUID_Server和SLE_UUID_Client程序测试
  • 『网络游戏』制作加载进度UI【04】
  • <<迷雾>> 第 9 章 计算机时代的开路先锋 示例电路
  • AI学习指南深度学习篇-生成对抗网络的基本原理