SpringBoot3.X-1(MP+Druid)
本次基于springboot-3.5.5,先附上文档地址:https://docs.spring.io/spring-boot/reference/data/sql.html
初始化springboot项目
项目创建步骤不做记录
集成mybaits-plus
先附上官网地址,具体参数可以
1. 引入pom依赖
Spring Boot3.5.5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.13</version>
</dependency>
<!-- 自动3.5.9版本后分页组件要单独引入 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2. 添加yml配置
mybatis-plus:
configuration:
# MyBatis 配置
map-underscore-to-camel-case: true
global-config:
# 全局配置
db-config:
# 数据库配置
id-type: auto
3. 添加分页插件
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 如果配置多个插件, 切记分页最后添加
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}
4. 添加主键ID
对于第二步中的mybatis-plus.global-config.db-config.id-type
官方提供了多种内置的生成器
/**
* 数据库ID自增
* <p>该类型请确保数据库设置了 ID自增 否则无效</p>
*/
AUTO(0),
/**
* 该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
*/
NONE(1),
/**
* 用户输入ID
* <p>该类型可以通过自己注册自动填充插件进行填充</p>
*/
INPUT(2),
/* 以下2种类型、只有当插入对象ID 为空,才自动填充。 */
/**
* 分配ID (主键类型为number或string),
* 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
*
* @since 3.3.0
*/
ASSIGN_ID(3),
/**
* 分配UUID (主键类型为 string)
* 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))
*/
ASSIGN_UUID(4);
内置雪花算法默认会取网络地址加入到运算中 ,一般不会涉及到重复 ,如果特殊情况 ,需要使用redis、zk、数据库或者其他的手段来分发word-id保证每个不重复。
分布式/集群式场景下
mybaits-plus支持雪花算法的配置 。在分布式/集群场景下可以可以优先选择以下配置保证前缀的唯一。
工作节点ID:workerId
在 Snowflake 算法中,每个节点(或服务实例)都需要一个唯一的
workerId
,用来生成全局唯一 ID 的一部分。它通常是 0~31(如果 workerId 占 5 位)的整数
数据中心ID:datacenterId
用于区分不同的数据中心或机房。Snowflake 算法中,
datacenterId
和workerId
组合起来确保在不同节点生成的 ID 不会冲突
首选网络地址:preferredNetworks
用于自动选择本机的 IP 或网卡。通常填写本机内网地址或者匹配的正则表达式,框架会优先选择这些网络地址来生成
workerId
,方便在多网卡环境下区分节点
忽略的网卡:ignoredInterfaces
指定不需要考虑的网卡名称(支持正则),框架在自动选取 IP 时会排除这些网卡,例如
lo
(本地环回)或docker0
添加druid管理数据源
1. 添加配置
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.27</version>
</dependency>
2. 添加数据源
spring:
datasource:
url: jdbc:postgresql://192.168.3.76:5432/longj
username: postgres
password: 123456
type: com.alibaba.druid.pool.DruidDataSource #设置数据源的类型
druid:
db-type: postgresql
asyncInit: true # 异步初始化避免阻塞
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
3. 配置监控页面(可选)
3.1 添加yml配置
spring:
datasource:
druid:
statViewServlet: # Druid监控页面配置
allow: 192.168.3.0/16 # 允许访问的IP段
deny: '' # 拒绝访问的IP
reset-enable: false # 禁用重置按钮
enabled: true # 启用Druid监控页面
login-username: admin # 监控页面登录用户名
login-password: admin # 监控页面登录密码
url-pattern: /druid/* # 监控页面的访问URL路径
web-stat-filter: # Druid Web统计过滤器配置
enabled: true # 启用Web统计过滤器
session-stat-enable: true # 启用会话统计功能
session-stat-max-count: 1000 # 最大会话统计数量
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter: # Druid过滤器配置
stat: # SQL统计过滤器配置
enabled: true # 启用SQL统计过滤器
log-slow-sql: true # 启用慢SQL日志记录
slow-sql-millis: 10 # 慢SQL的执行时间阈值(单位:毫秒)
wall:
enabled: true
3.2 查看监控
到这里就完成注册 ,可以打开页面访问:http://192.168.3.103:8080/druid
查看,可以看到监控面板。、
发送请求后再次查看面板
到这里大功告成。
4. 注意
springboot3以后需要使用的是
druid-spring-boot-3-starter
的依赖。spring.datasource.druid.filter可以根据自己的日志框架进行配置。具体详见配置https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter