在做spring+mybatiss時,自動掃描都配置正確了,卻在運行時出現了如下錯誤。后來查看target/classes/.../dao/文件夾下,發現只有mapper的class文件,
而沒有xml文件,將對應的xml文件放到這個文件夾下運行就不會出現下面的錯誤。說明出現這個錯誤的原因是maven編譯時沒有將xml文件放進去。
對於MAVEN項目,Eclipse會自動把項目src\main\java\目錄下的配置文件(.xml)和資源文件(.properties)搬運到target目錄下,而intellij idea默認是不會幫我們做這件事的。
解決辦法:
在pom.xml文件中加入以下配置:
<build> ... <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> ... </build>
這段代碼的意思就是把src/main/java目錄下所有的xml文件都包含進去,其中${basedir} 是MAVEN的內置變量,表示項目根目錄。
同樣,想包含其他什么文件,比如.properties文件,再加一個<include>標簽類似的寫法即可。
做了以上工作以后,再把項目“Reimport”(右鍵選中項目->Maven->Reimport)一下,啟動服務器,調用Mapper接口便不會報錯了,
而且target目錄下對應的位置也有了mapper.xml文件。