Springboot部署運行Mapper綁定異常

問題描述:

項目本地運行沒有問題,但是在部署到遠程服務器時報錯:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。

項目背景描述:

項目是用springboot開發,Modules分爲dao、entity、service、web。mapper.xml都在dao的resources中。啓動類和yml配置都在web中,然後配置類也加上@MapperScan(“xx.xx.xx.dao”)了,mybatis的配置也 配置好了mapper-locations: classpath*:mapper/*.xml。

解決辦法:

將yml文件中的mybatis的配置mapper-locations: classpath:mapper/.xml,改爲mapper-locations: classpath*:mapper/.xml。看好了,在classpath後加上星。

思考解決過程:

1.看到這個錯誤當時的第一想法是dao方法對應的mapper有問題,然後接着去本地運行項目,結果啓動成功,流暢運行。
2.因爲之前本地運行也碰到過相應的問題,clean了重新編譯運行就好了,就又打包上傳到遠程服務器部署運行,結果還是報錯。
3.然後就有點蒙了,就又仔細的檢查了和mapper相關的所有配置,都沒有問題。
4.網上瀏覽相關問題,網上在pom.xml的bulid中有以下配置,配置打包後還是不行。
在這裏插入圖片描述
5.之後就對比本地運行和打包運行的區別。
(1)class中是web層的代碼,lib是依賴的相關jar包
在這裏插入圖片描述
(2)這是lib中dao、entity、serivce的jar包
在這裏插入圖片描述
這就發現問題了,web裏配置的mybatis對應的mapper掃描是不是掃描不到dao的jar包,然後上網搜索相關問題,結果還真是。
6.這就問題簡單了,本地運行各模塊沒有被打成jar包可以掃描到相關路徑,就可以正常運行。打包後Springboot只能掃描啓動類所在模塊。

發佈了66 篇原創文章 · 獲贊 125 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章