如何在MyBatis映射器界面中为整个方法设置类提供程序类型

问题描述 投票:0回答:1

我有接口personMapper和类似的方法。

public interface EmployeeMapper {

    @SelectProvider(type = EmployeeMapperImpl.class, method = "getAll")
    List<Employee> getAll();

//similar methods

}

而且我对整个界面也有一个类

public class EmployeeMapperImpl{


    public String getAll() {
        return new SQL().
                SELECT("*").
                FROM(Employee.class.getSimpleName()).toString();
    }

}

我想知道是否有可能,如何标记与已定义的类关联的接口,以免在每种方法中都写“ type = EmployeeMapperImpl”?并且完全摆脱了编写方法=“ getAll”,因为其标题在类和接口中都是相同的。我想得到类似的东西

@ProviderForAllMethods("EmployeeMapperImpl")
  public interface EmployeeMapper {

        //and methods are associeted by their names(the same in class and constructor)
        List<Employee> getAll();

    //similar methods

    }

感谢您的帮助

sql jpa interface annotations mybatis
1个回答
0
投票
  • 如果使用MyBatis 3.5.1或更高版本,则可以省略method
  • 目前无法省略type(当前最新为3.5.4)。
  • 注释映射器接口本身在技术上是困难的。

要省略method,您的SQL提供程序类需要实现ProviderMethodResolver接口。如您所料,默认实现将搜索与接口方法同名的提供者方法。

ProviderMethodResolver

此外,我们在3.5.2版中将SQL提供程序批注的public class EmployeeMapperImpl implements ProviderMethodResolver { 属性作为type的别名,因此您的映射器方法可以更简单一些。

value
© www.soinside.com 2019 - 2024. All rights reserved.