Mybatis mapper標簽中配置子標簽package的坑及解決

mapper標簽中配置子標簽package的坑

在這裡插入圖片描述

首先java目錄下的.java文件和resources下的.xml文件必須要在同一目錄下,但是在resource中創建目錄時不要順手像在java文件中創建包一樣,直接創建瞭com.mapper文件夾,這樣不是創建瞭com – mapper兩個文件夾,而是創建瞭一個叫做com.mapper的文件夾!!!

這樣會導致.java文件和.xml文件位置不同,這個位置坑瞭我一個小時,希望各位註意一下。

Mybatis中mappers標簽介紹

MyBatis 是基於 sql 映射配置的框架,sql 語句都寫在 Mapper 配置文件中,當構建 SqlSession 類之後,就需要去讀取 Mapper 配置文件中的 sql 配置。

而 mappers 標簽就是用來配置需要加載的 sql 映射配置文件路徑的。

配置方式

mappers 標簽下有許多 mapper 標簽,每一個 mapper 標簽中配置的都是一個獨立的映射配置文件的路徑,配置方式有以下幾種

1.接口所在包

package標簽,通過name屬性指定mapper接口所在的包名 ,

此時對應的映射文件必須與接口位於同一路徑下,並且名稱相同

<mappers>
 <!-- mapper接口所在的包名 -->
  <package name="com.i.mapper"/>
</mappers>

2.相對路徑配置

mapper標簽,通過resource屬性引入classpath路徑的相對資源

<mappers>
 <!-- 通過resource屬性引入classpath路徑的相對資源-->
    <mapper resource="com/i/mapper/FlowerMapper.xml"/>
   <mapper resource="com/i/mapper/StudentMapper.xml"/>
   <mapper resource="com/i/mapper/TeacherMapper.xml"/>
</mappers>

3.類註冊引入

mapper標簽,通過class屬性指定mapper接口名稱,

此時對應的映射文件必須與接口位於同一路徑下,並且名稱相同

<mappers>
    <!-- 使用接口信息進行配置 -->
    <mapper class="com.i.mapper.FlowerMapper"/>
    <mapper class="com.i.mapper.StudentMapper"/>
    <mapper class="com.i.mapper.TeacherMapper"/>
</mappers>

4.使用URL絕對路徑方式引入(不用)

mapper標簽,通過url引入網絡資源或者本地磁盤資源

<mappers>
 <mapper url="xml文件訪問URL" />
 <mapper url="file:///var/mappers/UserMapper.xml"/>
</mappers>

使用總結

隻有配置瞭 mappers 信息後,MyBatis 才知道去哪裡加載 Mapper 映射文件,

開發中,根據項目中 Mapper 的配置偏好,選擇整合配置文件的配置方式

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: