一. 使用说明
1. 版本支持
A:dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
B:其支持 Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。
2. maven引用
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
3.Nacos 配置
mybatis-plus:
# 指定SQL文件路径
mapper-locations: classpath*:mapper/*Mapper.xml
#Dao对应的实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.*.*.domain
configuration:
#指将带有下划线的表字段映射为驼峰格式的实体类属性
map-underscore-to-camel-case: true
#开启二级缓存,默认开启
cache-enabled: false
#开启sql日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
#全局主键自增长模式
id-type: auto
#配置逻辑删除字段为0是删除
logic-delete-value: 0
#配置逻辑删除字段为1是未删除
logic-not-delete-value: 1
二.相关功能支持
1.多数据源
样例:
spring:
datasource:
dynamic:
#修改默认数据源名称,默认值是master
primary: master
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://XXX
username: XXX
password: XXX
type: com.zaxxer.hikari.HikariDataSource
hikari: XXXXXX
slave_1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://XXXX
username: XXX
password: XXX
type: com.zaxxer.hikari.HikariDataSource
hikari:XXXXXX
1.1.maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
1.2. 业务中引用多数据源
项目中使用多数据源加标签:
A:@DS("dsName")
B:如果没有添加则默认在主库读写
C:同一个类中不能同时加载两个数据源标签,加上也不生效
官网说明: https://mybatis.plus/guide/dynamic-datasource.html
2. 项目打印完整SQL
2.1. 方案一 p6spy
A:maven引用
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.0</version>
</dependency>
B:修改Nacos数据源配置
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url:jdbc:p6spy:mysql://127.0.0.1:3306/db_name?serverTimezone=Asia/Shanghai&useSSL=false
C:项目根路径resources文件夹下追加文件:spy.properties
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
缺点:无法打印自定义的完整SQL
3. mybatis-plus SQL 用 lambada 书写文档规范指引
A : LambdaQueryWrapper<T> lambda3 = Wrappers.<T>lambdaQuery();
B : List<T> stationBaseDiscounts = new LambdaQueryChainWrapper<T> (mapper). ;
3.1. lambada 表达式方法含义介绍
A:lt :小于
B:le:小于等于
C:gt:大于
D:ge:大于等于
E: eq:
F:ne: 不等于 <>
G: between:
H:likeLeft : LIKE '%222'
I:likeRitht: LIKE ’222%’
4.分页查询
4.1. 使用方法
Mybatis 的分页仅需要用户传递参数:( 当前页,每页行数),其底层会拼装SQL帮助用户查询数据的总行数
/**
* 分页查询例子
*/
public void pageExample(){
//参数一是当前页,参数二是每页行数
IPage<StationBaseDiscount> page = new Page<>(2, 10);
//查询条件
LambdaQueryWrapper<Demo> lambda3 = Wrappers.<Demo>lambdaQuery();
lambda3.like(Demo::getId, "12").lt(Demo::getYear, 40);
page = demoMapper.selectPage(page, lambda3 );
List<Demo> list = page.getRecords();
for(Demo station : list){
System.out.println("page:"+ station );
}
}
5.缓存应用
https://blog.csdn.net/sinat_35663368/article/details/115521328