今天面试的时候面试官问了 mybatis的映射接口是否支持重载,我心想着mybatis这种比较成熟的框架应该是可以的,结果是mybatis是并不支持的,所以我百度了下,发现mybatis mapper中不能重载,因为它是通过 package1.package2.ClassName.methodname来定位方法的。然后我再网上找到了这个的解决方式,
方法一:
使用mybatis的动态sql
if
就行了,没必要去重载
方法二:
使用jdk1.8以后的default
解决
public interface AccountMapper {
default List<Account> getAccounts(@Param("status") String status) {
return this.getAccounts(status, -1);
}
List<Account> getAccounts(@Param("status") String status, @Param("owner") int owner);
}
当不进行方法的重载时,即:每个方法都有唯一的命名时,在xml中进行映射后,就可以执行,不会出现异常。
所以mybatis中mapper.xml是不会准确映射到Java中的重载方法的。最好不要在mapper接口中使用方法重载
评论区