解決多模塊項目中Mybatis的Mapper內(nèi)部方法找不到的問題
程序運行過程中出現(xiàn)的問題
我要使用Mybatis插入一條數(shù)據(jù),提示我找不到 insert 方法或者提示找不到其它的方法!
假如你也有和我一樣的問題,找了好久又找不到解決辦法,路徑核對了N遍,Mapper.xml配置文件也都中規(guī)中矩的寫在了工程的resources下,還是有問題,那就靜下心往下看 雖然解決的辦法不一定能幫到你,但是也請試一試!
以下是報錯的截圖
org.apache.ibatis.binding.BindingException:Invalid bound statement (not found): com.miu.mabatistest.mapper.ServerMapper.insert
我的問題出現(xiàn)在Maven多模塊工程上,Mybatis是單獨一個模塊用于CRUD操作,被其它模塊調(diào)用!
實體類,Mapper接口,還有Mapper.xml配置文件都是使用Mybatis的 generator 插件自動生成出來的,路徑我核對了一遍又一遍,網(wǎng)上找了各種解決辦法,毫無頭緒,后來為了測試到底是哪出的問題我在Mapper接口中,自己寫了一個查詢所有的方法,使用注解的方式!
后來我運行程序測試了一下我用注解的方式寫的 findAll方法,一點問題沒有,都查出來了,很奇怪,注解的方式就可以,xml的方式就不行,這就證明了問題就在于我的Mapper.xml配置文件不好使啊,并沒有被加載讀取!
解決方法
在你的application.properties配置文件中,加入mybatis的配置
雖然之前你沒有配置程序依然正常啟動,啟動程序的時候不報錯,是因為你不寫,程序就干脆不給你加載!
把Mybatis掃描xml的路徑給配上去,就可以了!
這里還有個小問題就是,如果你是多模塊工程,mybatis也是分離的模塊,那么你的application.properties 文件或者是applicaion.yml文件是不在mybatis模塊中的,基本都在你的啟動類里面配置,那么路徑上就需要寫成 classpath* :你Mapper.xml的位置 這塊可能不好理解,給你貼個我的結(jié)構(gòu)圖和路徑圖,classpath后面寫個星,是因為要掃面所有模塊,如果你不寫它只會掃面它自己這一個模塊!
如果是單一結(jié)構(gòu)的工程,直接寫路徑就完事了,就那么一個路徑別說你寫不明白!
此圖是我gateway模塊中的application.properties文件的截圖
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java高并發(fā)寫入用戶信息到數(shù)據(jù)庫的幾種方法
本文主要介紹了java高并發(fā)寫入用戶信息到數(shù)據(jù)庫的幾種方法,具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03Java 中的FileReader和FileWriter源碼分析_動力節(jié)點Java學院整理
本文給大家分享一段示例程序,通過示例代碼可以看出FileReader是基于InputStreamReader實現(xiàn)的,FileWriter是基于OutputStreamWriter實現(xiàn)的,具體程序代碼大家通過本文了解下吧2017-05-05Java 遞歸遍歷實現(xiàn)linux tree命令方式
這篇文章主要介紹了Java 遞歸遍歷實現(xiàn)linux tree命令方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Spring框架設(shè)值注入操作實戰(zhàn)案例分析
這篇文章主要介紹了Spring框架設(shè)值注入操作,結(jié)合具體實例形式分析了spring框架設(shè)值注入相關(guān)實現(xiàn)與使用方法,需要的朋友可以參考下2019-11-11Java連接操作Oracle數(shù)據(jù)庫代碼詳解
這篇文章主要介紹了Java連接操作Oracle數(shù)據(jù)庫代碼詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06