All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.datasource.strategy.TableSwitchStrategyMatcher Maven / Gradle / Ivy

The newest version!
package org.zodiac.datasource.strategy;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Map;
import java.util.function.Supplier;

import org.zodiac.core.aop.MethodInterceptorContext;

/**
 * 数据库表切换策略,可通过此接口来自定义表切换的方式。
 */
public interface TableSwitchStrategyMatcher {

    /**
     * 匹配类和方法,返回是否需要进行表切换。
     *
     * @param target 类
     * @param method 方法
     * @return 是否需要进行数据源切换
     */
    boolean match(Class target, Method method);

    /**
     * 获取表切换策略。
     *
     * @param context aop上下文
     * @return 切换策略
     */
    Strategy getStrategy(MethodInterceptorContext context);

    /**
     * 表切换策略。
     */
    interface Strategy {
        /**
         * @return 表映射关系
         * @see org.zodiac.datasource.switcher.TableSwitcher#getTable(String)
         */
        Map getMapping();

        static Strategy of(Map mapping) {
            return () -> mapping;
        }

        static Strategy of(Supplier> supplier) {
            return of(supplier.get());
        }

        static Strategy single(String source, String target) {
            return of(() -> Collections.singletonMap(source, target));
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy