(2) {{ String[] tableNames = dynamicTableNames.split(",")"> (2) {{ String[] tableNames = dynamicTableNames.split(",")"> (2) {{ String[] tableNames = dynamicTableNames.split(",")">
@Configuration
@MapperScan(basePackages = {"com.ecdigit.mapper", "com.ecdigit.transfer.data.mapper"})
@Slf4j
public class MybatisPlusConfig {
@Value("${DynamicTableNames}")
private String dynamicTableNames;
/**
* mybatis-plus分页插件,
* 【看着过时不爽也不能换】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2) {{
String[] tableNames = dynamicTableNames.split(",");
log.info("dynamicTableNames长度:"+tableNames.length);
for(String table:tableNames){
log.info("当前处理表:{}",table);
put(table, (metaObject, sql, tableName) -> {
String [] strArray = sql.split(" ");
List<String> sqlStr = Arrays.asList(strArray);
List<String> cases = sqlStr.stream().filter(t->t.contains(table)).collect(Collectors.toList());
String caseStr = cases.stream().findAny().orElse(null);
if(caseStr!=null){
// 判断表名前缀是否多拼,如果待拼接为数字开头,则表名已经拼接好
if(SysOperateUtil.isStartWithNumber(caseStr)){
return tableName;
}else {
/* Long tableSeq = Constant.THREAD_LOCAL_TABLE_SEQ.get();*/
//暂时写死默认租户的编码
Long tableSeq=1624959287329685504L;
if (tableSeq == null) {
return tableName;
}
return tableSeq + "_" + tableName;
}
}
return tableName;
});
}
}});
paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));
return paginationInterceptor;
}
}
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// 添加动态表名拦截器
DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
// 设置动态表名解析器
dynamicTableNameInnerInterceptor.setTableNameHandlerMap(Collections.singletonMap("your_table_name", (sql, tableName) -> {
// 自定义动态表名逻辑
return "dynamic_" + tableName;
}));
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
return interceptor;
}
}