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。
推薦閱讀:
- 淺談MyBatis執行SQL的兩種方式
- Mybatis示例講解註解開發中的單表操作
- Mybatis配置解析看這一篇就夠瞭
- mybatis中mapper-locations的作用
- mybatis那些約定的配置你真的都瞭解嗎(經驗總結)