Closed DotNeter-Hpf closed 1 month ago
3.3.3
master
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.YEARMONTH); //拼接表名规则(原始表名+下划线+年+月) return tableName + "" + yearMonth; } }
OmCdrController.java @DynamicTable(value = DynamicTableConstant.HWT_OM_CDR) @PostMapping(value = "/add") public Result add(@RequestBody OmCdr omCdr) { omCdrService.save(omCdr); return Result.OK("添加成功!"); }
Spring Authorization Server
Shiro
该功能与JeecgBoot提供的功能无关,请参考MybatisPlus官方文档与样例 文档:https://baomidou.com/plugins/dynamic-table-name/ demo: https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-dynamic-tablename
版本号:
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.YEARMONTH); //拼接表名规则(原始表名+下划线+年+月) return tableName + "" + yearMonth; } }
OmCdrController.java @DynamicTable(value = DynamicTableConstant.HWT_OM_CDR) @PostMapping(value = "/add") public Result add(@RequestBody OmCdr omCdr) {
omCdrService.save(omCdr);
return Result.OK("添加成功!");
}
友情提示(为了提高issue处理效率):
Spring Authorization Server
替换Shiro
,目前是beta版不稳定,生产项目不要使用;