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

springboot3 configuration

1 多数据库配置

github: https://github.com/baomidou/dynamic-datasource
使用@DS()注解来切换数据库
详情介绍:https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611

注意:@DS 可以注解在方法上或上,同时存在就近原则 方法上注解 优先于 类上注解。

1.1 pom配置

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot3-starter</artifactId><version>${version}</version>
</dependency>

1.2 .propertis or .yml 配置

spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置slave_1:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverslave_2:url: ENC(xxxxx) # 内置加密,使用请查看详细文档username: ENC(xxxxx)password: ENC(xxxxx)driver-class-name: com.mysql.jdbc.Driver#......省略#以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2

1.3 代码中的额外配置

需要在启动类和Server类增加注解。

2 多模块配置

springboot多模块开发。其中pom文件和properties文件有如下关系:
(1)pom: 父子模块存在继承关系,子模块默认继承父模块所有依赖版本插件配置全局变量,除非子模块指定版本。(就和C++中父子类的继承一样。可以重载父类方法一样。子模块也可以重新指定依赖版本。)
(2)properties

2.1 pom

‌(1)基础继承‌
子模块通过标签声明父模块后,默认继承父POM中的:
< properties>定义的全局变量
< dependencyManagement>管理的依赖版本
< pluginManagement>定义的插件配置
‌(2)非自动继承内容‌
父模块中直接声明的< dependencies>和< build>配置‌不会自动继承‌到子模块,需子模块显式引用

(3)依赖版本覆盖‌
子模块声明相同依赖时:
若子模块指定版本号,则优先使用子模块版本17
未指定版本时继承父模块< dependencyManagement>中的版本25
‌(4)属性覆盖‌
子模块可重新定义< properties>中的值覆盖父模块配置

2.2 properties

(1)配置隔离性‌
Spring Boot默认不会自动加载父模块的application.yml或application.properties文件,每个子模块的配置文件是独立生效的。

‌(2)优先级规则‌
子模块的resources目录下的配置文件优先级高于父模块,且同目录下.properties会覆盖.yml的配置

(3)父模块通过指定名称引入子模块的配置:
多个子模块定义application.properties时,打包后仅主模块配置生效
将数据库连接等公共配置放在主模块的application.properties中,其他子模块的配置文件需要命名为application-{profile}.properties。在主模块中通过如下配置激活子模块的配置:(注意:profile可以是任意名称)

# 激活dev环境
spring.profiles.active=profile

2.3 启动类

无论有多少个模块,启动类只能有一个。
如果其他子模块没有正常启动,需要添加注解:

@springBootApplication(sanBasePackages={"com.demo")

注意,这里"com.demo"是子模块的包路径。
如果子模块的包路径和启动模块的包路径完全一致,则不添加该注解也可正常启动。

3 Mybatisplus配置

Mybatisplus兼容Mybatis,因此,依赖引入是仅引用Mybatisplus即可。

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.12</version>
</dependency>

3.1 注解的语句用法(参数传递)

可以直接使用@Select、@Results等注解,在方法上,而无需配置xml文件。
这其中,需要注意参数的传递。
(1)#{param} 占位符
这类会视为变量,预编译阶段会认为是 ? 。

(2)${param} 字符串
该类参数在预编译阶段会被字节按照字符串替换。

mybatis注解的配置
https://blog.csdn.net/qq_45297578/article/details/121677970

3.2 sql查询结果与自定义类的映射

通常来说,我们会准备一个类来接受sql查询返回的结果。
有3种方法可以实现数据映射:
(0)类属性名与sql表的列名自动匹配(完全一致)
(1)在类定义中加上@Table的注解指定
(2)在mapper方法上加上@Results注解

@Results({@Result(property = "userName", column = "user_name"),@Result(property = "homeTown", column = "home_town")
})
@Select("SELECT * FROM user")
List<User> selectUsers();

这里,property指定的是类User的属性,column指定的是sql查询语句返回结果的列名。

http://www.lryc.cn/news/2386204.html

相关文章:

  • 从工程实践角度分析H.264与H.265的技术差异
  • 如何设计一个高性能的短链设计
  • 提升工作效率的可视化笔记应用程序
  • 11|省下钱买显卡,如何利用开源模型节约成本?
  • GDB调试工具详解
  • 机器学习圣经PRML作者Bishop20年后新作中文版出版!
  • Armadillo C++ 线性代数库介绍与使用
  • 吴恩达机器学习笔记:逻辑回归3
  • 大模型知识
  • C/C++ 结构体:. 与 -> 的区别与用法及其STM32中的使用
  • docker中使用openresty
  • Jetpack Compose 中更新应用语言
  • Java 中的 super 关键字
  • CMake基础:CMakeLists.txt 文件结构和语法
  • PCM音频数据的编解码
  • WebView2 Win7下部分机器触屏失效的问题
  • Ubuntu 通过指令远程命令行配置WiFi连接
  • 线程池优雅关闭的哲学
  • 11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南
  • 8天Python从入门到精通【itheima】-41~44
  • 深度图数据增强方案-随机增加ROI区域的深度
  • [Java恶补day6] 15. 三数之和
  • Django模板及表单
  • 两个mysql的maven依赖要用哪个?
  • Kafka Consumer工作流程
  • 大腾智能 PDM 系统:全生命周期管理重塑制造企业数字化转型路径
  • GATT 服务的核心函数bt_gatt_discover的介绍
  • 【短距离通信】【WiFi】WiFi7关键技术之4096-QAM、MRU
  • C 语言学习笔记
  • 【MySQL成神之路】MySQL函数总结