当前位置: 首页 > news >正文

mybatisPlus动态表前缀

基于若依springboot3

配置类

@Configuration
public class MybatisPlusConfig {private static final Set<String> LOGIC_TABLES = Set.of("companyinfo","departinfo","areainfo","shopinfo","shopdevice","orderinfo","businessinfo");@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 乐观锁interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());// 防止全表更新与删除
//        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());// ① 动态表名拦截器DynamicTableNameInnerInterceptor dynamic = new DynamicTableNameInnerInterceptor();dynamic.setTableNameHandler((sql, logic) -> {if (!LOGIC_TABLES.contains(logic)) {        // 其它表直接返回return logic;}// ThreadLocal 控制String prefix = DynamicTableContext.getPrefix();  // "center" / "stock" / nullif (prefix == null) {return "merge_" + logic;}return prefix + "_" + logic;             // 源表});interceptor.addInnerInterceptor(dynamic);return interceptor;}}

DynamicTableContext

package com.dhServer.framework.config.mybatisplus;public class DynamicTableContext {private static final ThreadLocal<String> TL = new ThreadLocal<>();public static void setPrefix(String p) { TL.set(p); }public static String getPrefix()       { return TL.get(); }public static void clear()             { TL.remove(); }
}

使用

使用时只需要想当前的 ThreadLocal 中设置前缀即可

DynamicTableContext.setPrefix(server);mapper.delete(entity);
http://www.lqws.cn/news/510337.html

相关文章:

  • 磁悬浮轴承遇上“热浪”挑战:多参数自适应补偿策略揭秘
  • [学习] C语言编程中线程安全的实现方法(示例)
  • day041-web集群架构搭建
  • 棋盘格标定板和圆形标定板的优劣性
  • windows 上 build 时,微软给出的 vcpkg 工具,如何使用
  • MySQL 8.x配置MGR高可用+ProxySQL读写分离(三):配置ProxySQL主从分组信息
  • [3D-Portfolio] docs | js集中式配置 | React组件 | 组件嵌套
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的超市库存商品管理系统,推荐!
  • 16、nrf52840蓝牙学习(唯一ID加密与解密)
  • 华为认证预约考试、考试时长、取消/改期、补考时间汇总
  • C++ <vector>
  • Redis 乱码和LocalDateTime类型缓存问题
  • 鸿蒙开发深入解析:Data Ability 数据共享机制全面指南
  • 工业弧焊机器人气保焊节气装置
  • 搭建智能问答系统,有哪些解决方案,比如使用Dify,LangChain4j+RAG等
  • 【Altium】原理图位号自动标注
  • spring中的切面类实践
  • WPF CommunityToolkit.Mvvm
  • 【技术难题】el-table的全局数据排序实现示例,不受分页影响,以及异步请求带来的页面渲染问题
  • 针对基于深度学习的侧信道分析(DLSCA)进行超参数的贝叶斯优化
  • VIVADO导出仿真数据到MATLAB中进行分析
  • python基础(字符串-复习)
  • 关于素数、唯一分解等内容的详细讲解(从属于GESP五级)
  • vscode + Jlink 一键调试stm32 单片机程序(windows系统版)
  • HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
  • I2C设备树参数详解
  • 猿人学js逆向比赛第一届第十三题
  • 多线程的同步
  • docker部署oracle数据库
  • Leetcode+JAVA+回溯1