图中的方法是mybatis的Mapper接口里的一个方法 有一个自定义的注解
是否可以在mybatis的拦截器里获取到这个注解?求大神解答

解决方案 »

  1.   

    AOP里面是 method.getAnnotation(.clazz)
      

  2.   

    我用的也是 aop 。在拦截器中没试过。
    接口 s = method.getAnnotation(接口.class);
      

  3.   

    测试了一下,是可以的@Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface NoFilter {
        String value() default "";
    } @Override
    public Object intercept(Invocation invocation) throws Throwable {
    // final Executor executor = (Executor) invocation.getTarget();
    final Object[] args = invocation.getArgs();
    final MappedStatement mappedStatement = (MappedStatement) args[0];
    final Object parameter = args[1];
    final RowBounds rowBounds = (RowBounds) args[2];
    String namespace = mappedStatement.getId();
    String className = namespace.substring(0,namespace.lastIndexOf("."));
    String methedName= namespace.substring(namespace.lastIndexOf(".") + 1,namespace.length());
    Method[] ms = Class.forName(className).getMethods();
    for(Method m : ms){
    if(m.getName().equals(methedName)){
    Annotation annotation = m.getAnnotation(NoFilter.class);
    System.out.println(annotation.toString());
    };
    }
    }