forked from kidgrow-microservices-platform

luliqiang
2020-07-10 cb49a28e3ea5cfac3910f6c237f40bcebd962397
租户设置中将动态表设置分离
1 files modified
28 ■■■■■ changed files
kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java 28 ●●●●● patch | view | raw | blame | history
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));
        }