解決使用intellij idea開發MAVEN項目在target目錄下不存在mapper.xml文件

Invalid bound statement (not found):com.beauxie.wxj.dao.UserMapper.findUserByCondition ”,說明這個異常是在調用Mapper接口時發生的,看到這個異常時,首選想到的是配置可能出了問題,或者沒有加註解,但反覆檢查以後,發現配置啥的都沒問題,其中xml配置文件中,關於DAO層與Mapper文件的映射配置如下:

[html] view plain copy
  1. <!-- 自動掃描entity目錄, 省掉Configuration.xml裏的手工配置 -->  
  2.     <property name="mapperLocations" value="classpath:com/beauxie/**/mapping/*.xml" />  

配置文件沒有問題,因爲在Eclipse中都是正常的,查看控制檯輸出:


以上的信息表示,服務器正在搜索文件以此來匹配:“com/beauxie/**/mapping/*.xml”,但最後的結果卻是:


也就是說沒有匹配到!我***,最後靜下心來發現是在target目錄下對應的位置找不到這個文件,然後去對應的目錄下發現其他的包都在(比如controller包),就是沒有mapper包(存放Mapper文件的),這讓我很納悶。最後自己百度了一下,終於找到了原因:

對於MAVEN項目,Eclipse會自動把項目src\main\java\目錄下的配置文件(.xml)和資源文件(.properties)搬運到target目錄下,而intellij idea默認是不會幫我們做這件事的。


解決辦法:

在pom.xml文件中加入以下配置:


對應代碼如下:

[html] view plain copy
  1. <!--解決Intellij構建項目時,target/classes目錄下不存在mapper.xml文件-->  
  2.        <resources>  
  3.            <resource>  
  4.                <directory>${basedir}/src/main/java</directory>  
  5.                <includes>  
  6.                    <include>**/*.xml</include>  
  7.                </includes>  
  8.            </resource>  
  9.        </resources>  

這段代碼的意思就是把src/main/java目錄下所有的xml文件都包含進去,其中${basedir} 是MAVEN的內置變量,表示項目根目錄

同樣,想包含其他什麼文件,比如.properties文件,再加一個<include>標籤類似的寫法即可。


做了以上工作以後,再把項目“Reimport”(右鍵選中項目->Maven->Reimport)一下,啓動服務器,調用Mapper接口便不會報錯了,而且target目錄下對應的位置也有了mapper.xml文件。




具體參考:http://blog.csdn.net/beauxie/article/details/65448964

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章