Mybatis由浅入深 - 05详解mappers配置的4种方式

发布于:2022-12-19 ⋅ 阅读:(182) ⋅ 点赞:(0)

这是Mybatis由浅入深的第5节,前四节传送门:
【Mybatis由浅入深 -01入门】
【Mybatis由浅入深 - 02增删改查CRUD】
【Mybatis由浅入深 - 03动态SQL】
【Mybatis由浅入深 - 04结果映射】

前言

在之前的章节里, 我们接连定义了3个mapper接口和映射文件xml, 但一直没有提Mybatis是如何知道我们定义的, 按照Mybatis的灵活性来说, 这里路径肯定不是固定的。
那么Mybatis是怎么知道我们写的mapper接口和映射文件xml在哪里呢?
其实Mybatis并没有使用什么特别的技术, 只是在全局配置文件config里通过mappers元素指定的, 如果仔细想想, 换作你来开发, 方式无外乎使用包(package)路径,xml(resource)路径,类(class)路径等这几种方式.
下面我们先来看看Mybatis是如何配置的, 再结合源码来看看Mybatis是如何实现的.

第1种. package方式

package元素, 通过name指定包路径,优先级第1(最高)

必须保证接口名(例如UserMapper)和xml名(UserMapper.xml)相同,还必须在同一个包中

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
	<package name="com.tiangang.dao.mapper"/>
</mappers>

第2种. resource方式

mapper元素, 通过resource指定classpath路径的相对资源, 优先级第2

不用保证同接口同包同名 (这也是前几节里使用的方式).

<!-- 使用相对于类路径的资源引用 -->
<mappers>
	<mapper resource="com/tiangang/dao/mapper/UserMapper.xml"/>
	<mapper resource="com/tiangang/dao/mapper/UserDynamicSqlMapper.xml"/>
	<mapper resource="com/tiangang/dao/mapper/AccountMapper.xml"/>
</mappers>

第3种. url方式

mapper元素, 通过url指定网络资源或者本地磁盘资源, 优先级第3

不推荐, 了解即可, 格式file:///var/mappers/AuthorMapper.xml

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
	<mapper url="file:E:/mappers/AccountMapper.xml"/>
</mappers>

第4种. class方式

mapper元素, 通过class指定接口路径, 优先级第4(最低)

必须保证接口名(例如UserMapper)和xml名(UserMapper.xml)相同,还必须在同一个包中

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
	<mapper class="com.tiangang.dao.mapper.UserMapper"/>
	<mapper class="com.tiangang.dao.mapper.UserDynamicSqlMapper"/>
	<mapper class="com.tiangang.dao.mapper.AccountMapper"/>
</mappers>

源码求证

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看