class DynamicDsInterceptor implements Interceptor {
    @Override
    public Object doIntercept(Invocation inv) throws Throwable {<FILL_FUNCTION_BODY>}
}

        DynamicDs anno = inv.getMethodAnnotation(DynamicDs.class);

        if(anno == null){
            anno = inv.getTargetAnnotation(DynamicDs.class);
        }

        if (anno == null) {
            return inv.invoke();
        } else {
            //备份
            String backup = DynamicDsKey.getCurrent();

            try {
                String dsName = InvKeys.buildByTmlAndInv(anno.value(), inv);

                DynamicDsKey.setCurrent(dsName);
                return inv.invoke();
            } finally {
                //还原
                DynamicDsKey.setCurrent(backup);
            }
        }
    
<no_super_class>