From cb49a28e3ea5cfac3910f6c237f40bcebd962397 Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Fri, 10 Jul 2020 13:56:47 +0800
Subject: [PATCH] 租户设置中将动态表设置分离

---
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java
index 2837969..6167526 100644
--- a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/config/DefaultMybatisPlusConfig.java
+++ b/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));
+
         }
 
 

--
Gitblit v1.8.0