请问,mybatis指定mapper.xml文件内容,要求文件和接口在同一目录下切文件名一致,这是为什么?
而在springboot中的配置文件中,指定mapper.xml在配置文件中指定位置,允许和接口不在同一位置,这又是为什么?
Mybatis中是否需要依赖配置文件的名称要和mapper接口的名称一致,主要有两种情况
一:当核心配置文件mapper标签下以resource形式指向依赖配置文件时,不需要
这样就可以加载到其相应的依赖配置文件通过namespace找到其相应的方法
二:如果mapper标签下以package包扫描形式时,需要。
原因如下:
1.包扫描形式时。实体类+Mapper接口通过动态代理调用方法
2.调用方法时会找其相应的映射配置文件
3.当多个mapper接口和mapper.xml同时存在,如果没有相同的名称,则动态代理就不能通过其一一对应的依赖配置文件创建其相应的实现方法
而在springboot中的配置文件中,指定mapper.xml在配置文件中指定位置,允许和接口不在同一位置,其实这和springboot无关,主要是你创建了maven项目,里面有专门放置配置文件的文件夹resources
早期的mybatis默认情况下是这样的,要手动配置才能放在不同位置。
这mybatis的加载mapper文件的源码
当sprigboot整合mybatis的时候,这就拆分了;
这就是springboot现在用起来的缺点,不如xml的地方,就是你压根不了解它核心配置类了,