十四、XML配置之映射器
映射器(mappers)
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:///
形式的 URL),或类名和包名等。例如:
这些配置会告诉 MyBatis 去哪里找映射文件,剩下的细节就应该是每个 SQL 映射文件了。
1. 使用相对于类路径的资源引用(强烈推荐)
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
2. 使用完全限定资源定位符(URL) :强烈不推荐使用
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
3. 使用映射器接口实现类的完全限定类名:
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
使用这种方式需要保证:
1. 接口类和xml文件在同一目录下
2. 接口文件和xml文件的名称相同
如下图:UserMapper.java和UserMapper.xml
4. 将包内的映射器接口实现全部注册为映射器(这种方式类似typeAlias下的package标签)
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
使用这种方式需要保证:
1. 接口文件和xml文件的名称相同
因此,在实际开发过程中,还是推荐使用第一种方式。