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查询语句返回结果的列名。