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;}
}