springboot集成mybatis plus和dynamic-datasource注意事项说明
短信预约 -IT技能 免费直播动态提醒
springboot集成mybatis plus和dynamic-datasource注意事项
环境
- spring-boot-starter-parent 1.5.2.RELEASE
- mybatis-plus-boot-starter 2.x
- dynamic-datasource-spring-boot-starter 2.5.0
- druid-spring-boot-starter 1.1.10
注意事项
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
dynamic所有版本默认启用stat和wall过滤器(默认不支持批量执行sql, 并且有些低版本无法自定义)
开启批量执行sql的方法
# 方法1:升级版本, 如2.5.0
spring:
datasource:
dynamic:
druid:
wall:
noneBaseStatementAllow: true
multiStatementAllow: true
# 方法2:移除wall过滤器
spring:
datasource:
dynamic:
druid:
filters: stat
现有项目集成mybatis plus时,应指定另外的枚举包,否则会出问题
mybatis-plus:
type-enums-package: com.zxkj.demo.enums.mp
springboot mybatis plus多数据源配置整合dynamic-datasource
pro文件引入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<!--主从配置依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.6</version>
</dependency>
<!--lombok用来简化实体类:需要安装lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
application.yml配置
spring:
datasource:
dynamic:
primary: master #设置默认数据源或数据源组,master默认值(数据源名称可以随意起名,没有固定值,eg:db1,db2)
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.3.220:3306/mchouse_test1?useUnicode=true&characterEncoding=utf-8
username: *****
password: *****
slave_1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://112.30.184.149:3306/net_trans_sup_hefei_edi?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: *****
password: *****
slave_2:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://120.55.168.100:33066/net_trans_sup_hefei_edi?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: *****
password: *****
mybatis-plus:
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #org.apache.ibatis.logging.slf4j.Slf4jImpl
mapper-locations: classpath:mapper
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(100000);//ms,超过此处设置的ms则sql不执行
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
创建mapper接口
@Mapper
public interface DemoMapper extends BaseMapper<Demo> {
List<Demo> getAllList();
@DS("slave_2")
List<Demo> getShopList();
}
测试类测试
@SpringBootTest
class Md5DemoApplicationTests {
@Autowired
private DemoMapper demoMapper;
@Test
void contextLoads() {
List<Demo> list=demoMapper.getAllList();
System.out.println(list);
System.out.println("***************");
List<Demo> shopList=demoMapper.getShopList();
System.out.println(shopList);
}
}
@DS优先级:方法 > 类
@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解,mapper或者service都可以添加,建议只在一个方法上添加即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341