千家信息网

springboot集成mybatis plus和dynamic-datasource的方法是什么

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要介绍"springboot集成mybatis plus和dynamic-datasource的方法是什么"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这
千家信息网最后更新 2025年02月21日springboot集成mybatis plus和dynamic-datasource的方法是什么

这篇文章主要介绍"springboot集成mybatis plus和dynamic-datasource的方法是什么"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"springboot集成mybatis plus和dynamic-datasource的方法是什么"文章能帮助大家解决问题。

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.0spring:  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接口

@Mapperpublic interface DemoMapper extends BaseMapper {    List getAllList();    @DS("slave_2")    List getShopList();}

测试类测试

@SpringBootTestclass Md5DemoApplicationTests {    @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都可以添加,建议只在一个方法上添加即可。

关于"springboot集成mybatis plus和dynamic-datasource的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

方法 数据 数据源 配置 插件 注解 版本 环境 知识 事项 文件 注意事项 行业 路径 过滤器 逻辑 问题 测试 不同 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发各阶段收费占比 java支付系统数据库事务 可以监控数据库变化的机制有哪些 厦门网络技术公司 防火墙 南充软件开发大概费用 微东台app软件开发商 金沙23111服务器 系统的数据库如何导出 电子交易的网络安全不包括 海淀区管理网络技术服务口碑推荐 上海系统软件开发价钱 软件开发公司的名字 电脑网络安全绘画男生 sql数据库全部怎么保存 广西公安网络安全技术岗 服务器远程安装系统 首都网络安全日 2018 基于网络技术的调度监督方案 备份恢复数据库的命令 学习反间谍法网络安全法心得 如何建立计算网络安全体系 计算机网络技术的应用与发展论文 excel做数据库 申银万国怎么设置代理服务器 带给网络安全的机遇和挑战 新洲区收银系统软件开发 阿里技术面试 数据库 组装一台服务器可以同时作业吗 淄博电商软件开发 学习网络安全需要哪些技能
0