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

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.xdnf.cn/news/8937.html

相关文章:

  • JavaWeb:SpringBootAOP切面实现统计方法耗时和源码解析
  • Mercy v2靶机通关笔记
  • 深度学习面试八股简略速览
  • 前端面经-虚幻引擎5
  • Vue 3(1) 用 Composition API 写一个简单的应用
  • 从本能到智能 | 人类大脑的三阶段进化与皮层神经元生成机制
  • Librosa是什么?用librosa进行多人声纹对比
  • 一些运算符重载的例子
  • Linux `date` 命令深度解析与高阶应用指南
  • 深入解析嵌入式开发核心问题 ——从总线协议到系统架构,全面掌握设计精髓
  • Maven基础篇
  • MCP协议:开发者生态系统的未来基石?
  • Python GDAL 库离线安装
  • 塑料杯子什么材质最好,用起来是不是安全?
  • 软件工程重点复习
  • Python之Pandas
  • 考虑安全稳定约束的优化调度综述
  • docker部署XTdrone
  • 5月25日day36打卡
  • 动态导入与代码分割实战
  • 二叉树--OJ2
  • Android组件化框架设计与实践
  • 计算机视觉---YOLOv1
  • Java 中的 super 关键字
  • 17. Qt系统相关:文件操作
  • 【Python 集合 Set 】全面学习指南
  • 【linux】mount命令
  • 卷积神经网络(CNN)深度讲解
  • NextJS 项目,编译成功,但是启动失败的解决方案
  • [Java恶补day6] 15. 三数之和