forked from kidgrow-microservices-platform

zhaoxiaohao
2020-08-13 0eb0c43113ed9c4585ba936dcbe87feb4df6ba24
kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java
@@ -57,7 +57,7 @@
        if (enableTenant) {
            TenantSqlParser tenantSqlParser = new TenantSqlParser()
                    .setTenantHandler(tenantHandler);
            sqlParserList.add(tenantSqlParser);
            //动态表名解析器
            DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
            Map<String, ITableNameHandler> tableNameHanderMap = new HashMap<>();
@@ -76,10 +76,34 @@
                dynamicTableNameParser.setTableNameHandlerMap(tableNameHanderMap);
                sqlParserList.add(dynamicTableNameParser);
            }
            sqlParserList.add(tenantSqlParser);
//            paginationInterceptor.setSqlParserList(CollUtil.toList(tenantSqlParser));
            paginationInterceptor.setSqlParserList(sqlParserList);
            paginationInterceptor.setSqlParserFilter(sqlParserFilter);
        } else {
            //动态表名解析器
            DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
            Map<String, ITableNameHandler> tableNameHanderMap = new HashMap<>();
            //通过配置文件获取需要动态解析的表名
            List<String> dynamicTables = tenantProperties.getDynamicTables();
            if(dynamicTables.size()>0){
                dynamicTables.forEach(item->{
                    tableNameHanderMap.put(item, new ITableNameHandler() {
                        @Override
                        public String dynamicTableName(MetaObject metaObject, String sql, String tableName) {
                            return DynamicTableContextHolder.getDynamicTable();
                        }
                    });
                });
                dynamicTableNameParser.setTableNameHandlerMap(tableNameHanderMap);
                sqlParserList.add(dynamicTableNameParser);
                paginationInterceptor.setSqlParserList(sqlParserList);
                paginationInterceptor.setSqlParserFilter(sqlParserFilter);
            }
//            paginationInterceptor.setSqlParserList(CollUtil.toList(tenantSqlParser));
        }