XML配置—映射器(mappers)
既然 MyBatis 的行为已经由其他元素基本配置完了,我们现在就要来定义SQL 映射语句了。 告诉 MyBatis 到哪里去找映
射文件。 你可以使用相对于类路径的资源引用,通过接口的类名 或 扫描包名下的配置等。例如:
方式一: 使用 resource 资源路径进行绑定【更加灵活】
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
<mappers>
<!--使用资源路径绑定配置文件,在通过其中的配置信息获取-->
<mapper resource="com/study/dao/UserMapper.xml"/>
</mappers>
方式二:使用 class 文件绑定注册【推荐使用】
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
<mappers>
<mapper class="com.stduy.dao.UserMapper"/>
</mappers>
使用 class 绑定注意点:
- 接口和他的Mapper配置文件必须同名!(如:UserMapper —> UserMapper.xml)
- 接口和他的Mapper配置文件必须在同一个包下!
深入理解:为什么要同名同包?
-
当通过 class文件 绑定时,会直接解析对应的 接口名【同名】,并将该 mapper接口 通过
mapper注册器(MapperRegistry)注册到内存中。
-
注册 mapper接口 的主要是为了将 Mapper接口 添加到 knownMappers 集合 中,
实现 Mapper接口类 到 Mapper代理工厂 的映射。
-
将 Mapper类 添加至集合后还必须完成一次.xml配置解析(即该文件目录下【同包】对应的 .xml 文件),
如果解析不成功,那么仍然会将mapper接口移除,所以接口和它的Mapper配置文件需要同名同包。
方式三:使用扫描包进行注入绑定【快速高效】
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
<mappers>
<package name="com.kuang.dao"/>
</mappers>
使用扫描包绑定注意点(和 class文件绑定方式基本一致):
- 接口和他的Mapper配置文件必须同名!(如:UserMapper,UserMapper.xml)
- 接口和他的Mapper配置文件必须在同一个包下!