解決Mybatis在IDEA中找不到mapper對映檔案的問題
剛開始在IDEA中做用Mybatis查資料庫中的資料時,報mapper對映檔案找不到,害的我檢查了好幾次配置的路徑是不是正確,但是看了好幾遍都沒有發現有拼寫錯誤。(我記得以前在eclipse中這樣寫是沒問題的)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/><!-- 事務的型別 --> <dataSource type="POOLED"><!-- 資料來源 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/student?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="cyy"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/cyy/mybatis/student.xml"/> </mappers> </configuration>
下圖為報錯截圖
然後就去網上查了一下原因,說是IDEA不會編譯src的java目錄下的xml檔案。
然後我就去查了一下編譯後的classes檔案,發現其中確實只有class檔案,並沒有xml檔案。(mybatis.xml位於resources目錄 下的)
這個問題的解決方法就是在pom.xml檔案中加上配置,讓編譯器把src/main/java目錄下的xml檔案一同編譯到classes資料夾下。
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
補充知識:踩 專案中@MapperScan和@Mapper共存 之坑XxxMapper that could not be found.
背景:
公司專案有個小夥子將專案的日誌功能做了優化。今天在pom新增依賴,在啟動類上加個註解,然後啟動專案突然報了ModuleMapper 找不到。
加粗樣式
專案一直是好的,又沒有對這個mapper修改。進入ModuleMapper 中發現上面也是有@Mapper註解的在這裡插入圖片描述
可是為什麼容器找不到呢,分析一下剛剛修改的才做,引入依賴加註解,問題可能是註解上的問題,註釋掉新增的註解,啟動服務正常執行。罪魁禍首就是這個註解。
點解註解發現配置類上有個@MapperScan掃描注入。發現這夥計需要操作資料庫。而我接收負責的專案用的是傳統的@Mapper注入。
思考:難道在一個專案中@MapperScan和@Mapper不能共存嗎?
嘗試解決:
自己建立一個springboot 專案,開始用@Mapper 注入容器 啟動程式。程式正常啟動。
停掉服務,將mapp檔案上的@Mapper刪除 ,將檔案移動到mapper檔案中,在啟動類上新增@MapperScan 掃包注入。正常啟動。
現在測試@MapperScan 和@Mapper 分別在不包中測試一下。現在將UserMapper 放在mapper包中, 將UserTokenMapper 放在mapper2包中並新增@Mapper 啟動測試。
啟動類:
UserMapper :
UserTokenMapper :
啟動專案報錯:Description:
Field userTokenMapper in com.wyz.yangyang.member.service.impl.MemberServiceImpl required a bean of type ‘com.wyz.yangyang.member.mapper2.UserTokenMapper' that could not be found.
Action:
Consider defining a bean of type ‘com.wyz.yangyang.member.mapper2.UserTokenMapper' in your configuration.
Disconnected from the target VM,address: ‘127.0.0.1:56527',transport: ‘socket'
Process finished with exit code 1
然後我有測試可@MapperScan 掃描的包中不放mapper 檔案 ,mapper2 中mapper檔案都新增@Mapper,發現啟動正常。
又測試了@MapperScan 和@Mapper 同在一個包中,啟動正常。
在此可以看出 @MapperScan 和@Mapper在不同包中,@Mapper註解失效。
為了專案快速開發,為了以後更好的相容,我將專案改為@MapperScan 模式,因為一個註解可以配置多個包路徑。
以上這篇解決Mybatis在IDEA中找不到mapper對映檔案的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。