mybatisplus的动态表名处理器

server/2024/10/22 4:04:57/
java">		<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>

我之前用的3.4.2的版本总是不好用,各种百度也没有找出结果,然后我就去找了官网,换成这个版本就好用了

java">package com.pj.handler;import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;/*** 动态表名处理器*/
@Component
public class DynamicTableNameHandler implements TableNameHandler {@Overridepublic String dynamicTableName(String sql, String tableName) {//在这里先手动处理tableNametableName= tableName.replace("tb_", "tb");HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();if (tableName.endsWith("__t")) { //找到_T结尾的表,然后再动态拼接上数字,String institutionId = request.getHeader("institutionId");if (institutionId != null && !institutionId.isEmpty()) {return tableName.substring(0, tableName.length() - 3) + "_" + institutionId;}throw new IllegalStateException("institutionId  not found in the request header.");}return tableName ;}
}
java">package com.pj.current.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
//import com.pj.handler.DynamicTableNameHandler;
import com.pj.handler.DynamicTableNameHandler;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;@Configuration
public class MyBatisPlusConfig {@Autowiredprivate DynamicTableNameHandler dynamicTableNameHandler;@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor =new DynamicTableNameInnerInterceptor(dynamicTableNameHandler);System.out.println(dynamicTableNameInnerInterceptor);interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);return interceptor;}
}


http://www.ppmy.cn/server/133790.html

相关文章

A Survey on 3D Gaussian Splatting 整理

0. 摘要与概述 简述 3D Gaussian Splatting (3D GS) 的关键概念、显著优势及应用前景。 3D 高斯散点 (3D GS) 是一种新兴且变革性的技术&#xff0c;用于三维场景的表示和渲染&#xff0c;在计算机图形学和计算机视觉领域中越来越受到关注。这种技术主要通过数百万个可学习的…

022 elasticsearch文档管理(添加、修改、删除、批处理)

文章目录 添加文档修改文档删除文档根据_id取文档使用批处理_bulk PortX&#xff1a; https://portx.online/zh MobaXterm&#xff1a; https://mobaxterm.mobatek.net/ FinalShell&#xff1a; http://www.hostbuf.com/ 添加文档 向索引中添加一行数据 使用json来表示 使用…

PyQt 入门教程(3)基础知识 | 3.2、加载资源文件

文章目录 一、加载资源文件1、PyQt5加载资源文件2、PyQt6加载资源文件 一、加载资源文件 常见的资源文件有图像、图标、样式表&#xff0c;下面分别介绍下加载资源文件的常用方法 1、PyQt5加载资源文件 创建.qrc文件&#xff1a; 可以使用QtCreator或手动创建一个.qrc文件&…

docker/docker-compose里面Command和entrypoint的关系

在Docker中&#xff0c;ENTRYPOINT和CMD都是用于指定容器启动时要执行的命令或程序的关键指令。它们之间的关系如下&#xff1a; 1. **ENTRYPOINT**&#xff1a; - ENTRYPOINT用于指定容器启动时要执行的主要命令或程序。它可以设置容器的主要可执行文件&#xff0c;在运行…

基于SpringBoot设计模式之结构型设计模式·桥接模式

文章目录 介绍开始架构图定义类的功能定义类的实现 测试样例 总结 介绍 将抽象部分与它的实现部分分离&#xff0c;使他们都可以独立地发生变化。 Bridge的意思是桥梁。就像在现实世界中&#xff0c;桥梁的功能是将河流的两侧连接起来一样, Bridge模式的作用也是将两样东西连接…

Git小知识:合理的分支命名约定

前言&#xff1a;创建新分支时&#xff0c;对 Git 分支进行合理的命名非常重要&#xff0c;应选择有描述性的名称&#xff0c;因为它可以帮助团队成员更好地理解分支的目的和内容&#xff0c;以便将来回顾时能立即明白分支的目的。以下是一些常见的分支命名约定&#xff1a; 功…

opencv物体追踪,人脸识别案例分析

引言 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;广泛应用于图像和视频处理、人脸识别、物体追踪等领域。本文将通过实际案例&#xff0c;探讨如何使用OpenCV实现物体追踪和人脸识别功能。 物体追踪案例分析 物体追踪实现 我们将使用OpenCV的视频捕捉功能&am…

吴伟仁《英国文学史及选读》第一二册课后答案PDF

新经典高等学校英语专业系列教材《英国文学史及选读》根据英国文学历史的顺序结合作品选读编写而成&#xff0c;在历史部分&#xff0c;对英国文学史的每个阶段作了简明扼要的概述&#xff0c;而在作品选读部分则尽可能遴选了文学史上的重要作家和重要作品。教材内容丰富&#…