mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 09:38:26 +08:00
refactor: optimize TableManager.java
This commit is contained in:
parent
f3551127a2
commit
e2b347a28c
@ -26,7 +26,15 @@ TableManager.setDynamicTableProcessor(new DynamicTableProcessor() {
|
|||||||
在某些情况下,我们临时修改映射关系,而非通过 `DynamicTableProcessor.process` 方法获取,可以通过如下配置:
|
在某些情况下,我们临时修改映射关系,而非通过 `DynamicTableProcessor.process` 方法获取,可以通过如下配置:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
TableManager.setHintTableMapping("tb_account", "tb_account_01")
|
try{
|
||||||
|
TableManager.setHintTableMapping("tb_account", "tb_account_01")
|
||||||
|
|
||||||
|
//这里写您的业务逻辑
|
||||||
|
|
||||||
|
}finally{
|
||||||
|
TableManager.clear()
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
那么此时,当前线程不再通过 `DynamicTableProcessor` 去获取。
|
那么此时,当前线程不再通过 `DynamicTableProcessor` 去获取。
|
||||||
|
|
||||||
@ -57,13 +65,13 @@ public class MyConfiguration {
|
|||||||
DynamicTableProcessor processor = new ....;
|
DynamicTableProcessor processor = new ....;
|
||||||
return processor;
|
return processor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public DynamicSchemaProcessor dynamicSchemaProcessor(){
|
public DynamicSchemaProcessor dynamicSchemaProcessor(){
|
||||||
DynamicSchemaProcessor processor = new ....;
|
DynamicSchemaProcessor processor = new ....;
|
||||||
return processor;
|
return processor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@ -22,6 +22,9 @@ import com.mybatisflex.core.table.TableManager;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author michael
|
||||||
|
*/
|
||||||
public interface IDialect {
|
public interface IDialect {
|
||||||
|
|
||||||
String wrap(String keyword);
|
String wrap(String keyword);
|
||||||
|
|||||||
@ -20,6 +20,9 @@ import com.mybatisflex.core.util.StringUtil;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author michael
|
||||||
|
*/
|
||||||
public class TableManager {
|
public class TableManager {
|
||||||
|
|
||||||
private TableManager() {
|
private TableManager() {
|
||||||
@ -28,8 +31,8 @@ public class TableManager {
|
|||||||
private static DynamicTableProcessor dynamicTableProcessor;
|
private static DynamicTableProcessor dynamicTableProcessor;
|
||||||
private static DynamicSchemaProcessor dynamicSchemaProcessor;
|
private static DynamicSchemaProcessor dynamicSchemaProcessor;
|
||||||
|
|
||||||
private static final ThreadLocal<Map<String, String>> tableNameMappingTL = ThreadLocal.withInitial(HashMap::new);
|
private static final ThreadLocal<Map<String, String>> tableNameMappingTL = new ThreadLocal<>();
|
||||||
private static final ThreadLocal<Map<String, String>> schemaMappingTL = ThreadLocal.withInitial(HashMap::new);
|
private static final ThreadLocal<Map<String, String>> schemaMappingTL = new ThreadLocal<>();
|
||||||
|
|
||||||
|
|
||||||
public static DynamicTableProcessor getDynamicTableProcessor() {
|
public static DynamicTableProcessor getDynamicTableProcessor() {
|
||||||
@ -49,7 +52,12 @@ public class TableManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void setHintTableMapping(String tableName, String mappingTable) {
|
public static void setHintTableMapping(String tableName, String mappingTable) {
|
||||||
tableNameMappingTL.get().put(tableName, mappingTable);
|
Map<String, String> hintTables = tableNameMappingTL.get();
|
||||||
|
if (hintTables == null) {
|
||||||
|
hintTables = new HashMap<>();
|
||||||
|
tableNameMappingTL.set(hintTables);
|
||||||
|
}
|
||||||
|
hintTables.put(tableName, mappingTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getHintTableMapping(String tableName) {
|
public static String getHintTableMapping(String tableName) {
|
||||||
@ -57,7 +65,12 @@ public class TableManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void setHintSchemaMapping(String schema, String mappingSchema) {
|
public static void setHintSchemaMapping(String schema, String mappingSchema) {
|
||||||
schemaMappingTL.get().put(schema, mappingSchema);
|
Map<String, String> hintTables = schemaMappingTL.get();
|
||||||
|
if (hintTables == null) {
|
||||||
|
hintTables = new HashMap<>();
|
||||||
|
schemaMappingTL.set(hintTables);
|
||||||
|
}
|
||||||
|
hintTables.put(schema, mappingSchema);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getHintSchemaMapping(String schema) {
|
public static String getHintSchemaMapping(String schema) {
|
||||||
@ -66,47 +79,45 @@ public class TableManager {
|
|||||||
|
|
||||||
|
|
||||||
public static String getRealTable(String tableName) {
|
public static String getRealTable(String tableName) {
|
||||||
|
|
||||||
|
Map<String, String> mapping = tableNameMappingTL.get();
|
||||||
|
if (mapping != null) {
|
||||||
|
String dynamicTableName = mapping.get(tableName);
|
||||||
|
if (StringUtil.isNotBlank(dynamicTableName)) {
|
||||||
|
return dynamicTableName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (dynamicTableProcessor == null) {
|
if (dynamicTableProcessor == null) {
|
||||||
return tableName;
|
return tableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, String> mapping = tableNameMappingTL.get();
|
String dynamicTableName = dynamicTableProcessor.process(tableName);
|
||||||
|
return StringUtil.isNotBlank(dynamicTableName) ? dynamicTableName : tableName;
|
||||||
String dynamicTableName = mapping.get(tableName);
|
|
||||||
if (StringUtil.isNotBlank(dynamicTableName)) {
|
|
||||||
return dynamicTableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
dynamicTableName = dynamicTableProcessor.process(tableName);
|
|
||||||
mapping.put(tableName, dynamicTableName);
|
|
||||||
return dynamicTableName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static String getRealSchema(String schema) {
|
public static String getRealSchema(String schema) {
|
||||||
|
Map<String, String> mapping = schemaMappingTL.get();
|
||||||
|
if (mapping != null) {
|
||||||
|
String dynamicSchema = mapping.get(schema);
|
||||||
|
if (StringUtil.isNotBlank(dynamicSchema)) {
|
||||||
|
return dynamicSchema;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (dynamicSchemaProcessor == null) {
|
if (dynamicSchemaProcessor == null) {
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, String> mapping = schemaMappingTL.get();
|
String dynamicSchema = dynamicSchemaProcessor.process(schema);
|
||||||
String dynamiSchema = mapping.get(schema);
|
return StringUtil.isNotBlank(dynamicSchema) ? dynamicSchema : schema;
|
||||||
if (StringUtil.isNotBlank(dynamiSchema)) {
|
|
||||||
return dynamiSchema;
|
|
||||||
}
|
|
||||||
|
|
||||||
dynamiSchema = dynamicSchemaProcessor.process(schema);
|
|
||||||
mapping.put(schema, dynamiSchema);
|
|
||||||
return dynamiSchema;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// public static void clear() {
|
public static void clear() {
|
||||||
// if (dynamicTableProcessor != null) {
|
tableNameMappingTL.remove();
|
||||||
// tableNameMappingTL.remove();
|
schemaMappingTL.remove();
|
||||||
// }
|
}
|
||||||
// if (dynamicSchemaProcessor != null) {
|
|
||||||
// schemaMappingTL.remove();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user