springboot集成mybatis plus和dynamic

网友投稿 1149 2022-11-09

springboot集成mybatis plus和dynamic

springboot集成mybatis plus和dynamic

目录springboot集成mybatis plus和dynamic-datasource注意事项环境注意事项springboot mybatis plus多数据源配置整合dynamic-datasourcepro文件引入依赖application.yml配置修改Application启动类创建MybatisPlusConfig创建mapper接口测试类测试

springboot集成mybatis plus和dynamic-datasource注意事项

环境

spring-boot-starter-parent 1.5.2.RELEASEmybatis-plus-boot-starter 2.xdynamic-datasource-spring-boot-starter 2.5.0druid-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文件引入依赖

mysql

mysql-connector-java

runtime

com.alibaba

druid-spring-boot-starter

1.2.6

com.baomidou

mybatis-plus-boot-starter

3.1.2

com.baomidou

dynamic-datasource-spring-boot-starter

2.5.6

org.projectlombok

lombok

1.18.20

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/*.xml #配置mybatis.xml文件路劲 classpath根路径

global-config:

# 逻辑删除配置

db-config:

# 删除后

logic-delete-value: 1

# 删除前

logic-not-delete-value: 0

修改Application启动类

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})

这里要排除DruidDataSourceAutoConfigure ,因为DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找url,username,password等。而我们动态数据源的配置路径是变化的。

创建MybatisPlusConfig

@Configuration

@EnableTransactionManagement

@MapperScan("com.example.md5_demo.com.db.**.mapper")

public class MyBatisPlusConfig {

/**

* SQL 执行性能分析插件

* 开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长

*/

@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 {

List getAllList();

@Dhttp://S("slave_2")

List getShopList();

}

测试类测试

@SpringBootTest

class Md5DemoApplicationTestshttp:// {

@Autowired

private DemoMapper demoMapper;

@Test

void contextLoads() {

List list=demoMapper.getAllList();

System.out.println(list);

System.out.println("***************");

List shopList=demoMapper.getShopList();

System.out.println(shopList);

}

}

@DS优先级:方法 > 类

@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解,mapper或者service都可以添加,建议只在一个方法上添加即可。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:双指针,二分,模拟,贪心经典题目
下一篇:交换机与路由器技术:OSPF路由重分发、OSPF的NSSA区域和OSPF虚链路
相关文章

 发表评论

暂时没有评论,来抢沙发吧~