概述
Mybatis加载Mapper接口有两个入口:一个是指定mapper xml,另一个是指定Mapper接口。
mapper xml
通过指定mapper xml的路径,Mybatis使用XMLMapperBuilder类来加载解析mapper xml文件。最后会使用mapperRegistry.addMapper(type)来加载,这个type就是mapper xml的namespace属性。
Mapper接口
指定Mapper接口,Mybatis使用方法mapperRegistry.addMapper(type)来加载,在这个方法内部会使用类MapperAnnotationBuilder来解析Mapper接口上的注解信息,首先是加载Mapper接口对应的mapper xml文件,然后在解析注解信息。其中怎么找到Mapper接口的mapper xml文件呢?将类名转为xml路径,比如:cre.mybatis.mapper.BookMapper -> cre/mybatis/mapper/BookMapper.xml。
总结
我们使用两个入口都可以让Mybatis加载我们的Mapper,但是使用Mapper接口的话,默认的mapper xml路径就是有要求的。所以使用mapper xml路径的方式比较好。