##### 版本号：
3.3.3
##### 分支： master？还是springboot3?
master

##### 前端版本: vue3版？还是 vue2版？
vue2
##### 问题描述：
mybatisplus动态表名拦截器，实现分表功能，通过apiPost软件一键测压，并发数2，压测轮次10，发现有15次接口调用报错

##### 截图&代码：

**DynamicTableConstant.java**
    public static final String HWT_OM_CDR = "hwt_om_cdr";

**CommonConstant.java**
     String YEAR_MONTH="YEAR_MONTH";

**DynamicTableAspect.java -> around()**
    String yearMonth = request.getHeader(CommonConstant.YEAR_MONTH);
    ThreadLocalDataHelper.put(CommonConstant.YEAR_MONTH, yearMonth);

**MybatisPlusSaasConfig.java -> dynamicTableNameInnerInterceptor()**
    if(DynamicTableConstant.HWT_OM_CDR.equals(dynamicTableName)){
                //当dynamicTableName不为空时才走动态表名处理逻辑,否则返回原始表名
                if (ObjectUtil.isNotEmpty(dynamicTableName) && dynamicTableName.equals(tableName)) {
                    // 获取当前年月
                    String yearMonth = ThreadLocalDataHelper.get(CommonConstant.YEAR_MONTH);
                    //拼接表名规则(原始表名+下划线+年+月)
                    return tableName + "_" + yearMonth;
                }
            }

**OmCdrController.java**
    @DynamicTable(value = DynamicTableConstant.HWT_OM_CDR)
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody OmCdr omCdr) {
        omCdrService.save(omCdr);
        return Result.OK("添加成功！");
    }

![image](https://github.com/jeecgboot/jeecg-boot/assets/62707731/95ff61c2-81a8-4a69-af42-0dc22451ad42)




#### 友情提示（为了提高issue处理效率）：
  - 未按格式要求发帖、描述过于简抽象的，会被直接删掉；
  - 请自己初判问题描述是否清楚，是否方便我们调查处理；
  - 针对问题请说明是Online在线功能(需说明用的主题模板)，还是生成的代码功能；
  - springboot3_sas分支采用 `Spring Authorization Server` 替换 `Shiro`，目前是beta版不稳定，生产项目不要使用;

  

mybatisplus动态表名拦截器，实现分表功能
This is a GitHub Issue
repo:jeecg-boot
owner:jeecgboot
Title : mybatisplus动态表名拦截器，实现分表功能
Issue date:

--- start body ---
##### 版本号：
3.3.3
##### 分支： master？还是springboot3?
master

##### 前端版本: vue3版？还是 vue2版？
vue2
##### 问题描述：
mybatisplus动态表名拦截器，实现分表功能，通过apiPost软件一键测压，并发数2，压测轮次10，发现有15次接口调用报错

##### 截图&代码：

**DynamicTableConstant.java**
    public static final String HWT_OM_CDR = "hwt_om_cdr";

**CommonConstant.java**
     String YEAR_MONTH="YEAR_MONTH";

**DynamicTableAspect.java -> around()**
    String yearMonth = request.getHeader(CommonConstant.YEAR_MONTH);
    ThreadLocalDataHelper.put(CommonConstant.YEAR_MONTH, yearMonth);

**MybatisPlusSaasConfig.java -> dynamicTableNameInnerInterceptor()**
    if(DynamicTableConstant.HWT_OM_CDR.equals(dynamicTableName)){
                //当dynamicTableName不为空时才走动态表名处理逻辑,否则返回原始表名
                if (ObjectUtil.isNotEmpty(dynamicTableName) && dynamicTableName.equals(tableName)) {
                    // 获取当前年月
                    String yearMonth = ThreadLocalDataHelper.get(CommonConstant.YEAR_MONTH);
                    //拼接表名规则(原始表名+下划线+年+月)
                    return tableName + "_" + yearMonth;
                }
            }

**OmCdrController.java**
    @DynamicTable(value = DynamicTableConstant.HWT_OM_CDR)
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody OmCdr omCdr) {
        omCdrService.save(omCdr);
        return Result.OK("添加成功！");
    }

![image](https://github.com/jeecgboot/jeecg-boot/assets/62707731/95ff61c2-81a8-4a69-af42-0dc22451ad42)




#### 友情提示（为了提高issue处理效率）：
  - 未按格式要求发帖、描述过于简抽象的，会被直接删掉；
  - 请自己初判问题描述是否清楚，是否方便我们调查处理；
  - 针对问题请说明是Online在线功能(需说明用的主题模板)，还是生成的代码功能；
  - springboot3_sas分支采用 `Spring Authorization Server` 替换 `Shiro`，目前是beta版不稳定，生产项目不要使用;

  

--- end body ---
