SpringBoot使用MyBatis-Plus解決Invalid?bound?statement異常
前言
本篇文章主要介紹關(guān)于我在SpringBoot中使用MyBatis-Plus是如何解決Invalid bound statement (not found)這個(gè)異常的。我先拋一些我在這個(gè)途中遇到的一些問題,看看各位了解不了解。
- 當(dāng)
Mybatis的xml文件不在resouce下時(shí)該如何配置。 - 如何去指定
mapper-Location的配置。 classpath*跟classpath的區(qū)別是啥- Invalid bound statement (not found)出現(xiàn)的原因是什么
以上就是我遇到這個(gè)問題之后總結(jié)的三個(gè)問題。
緣由
作者來了一下新公司,這邊的框架看的我很悶,特別是關(guān)于mybatis的一些用法。這邊的sql都是用注解寫在Mapper文件上。
例如:
@Select("SELECT id,status, " +
" actual_usage_id usage_id," +
" location_id ," +
" group_id ," +
" breakdown_Level_id, " +
" receive_persion_id " +
"FROM " +
" t_repair_workorder " +
" ${ew.customSqlSegment} ")
List<IndexDutyPageVo> dutyFaultPage(@Param(Constants.WRAPPER) Wrapper<?> wrappser);整個(gè)項(xiàng)目全是這種寫法,我一開始以為是規(guī)范。后面問了一個(gè)老員工才知道。說以前這個(gè)項(xiàng)目是寫在xml的,但是后面改了一下架構(gòu)之后xml的配置就掃描不到了。嗯嗯嗯…
這邊的項(xiàng)目結(jié)構(gòu),xml文件不是放在resouce下,并且具體的業(yè)務(wù)包是跟maven引入進(jìn)去的(這個(gè)就是我前文提到的架構(gòu)改變了)。注意這兩個(gè)是重點(diǎn)。我猜測(cè)他們不會(huì)配置的點(diǎn)應(yīng)該就是這個(gè)原因了吧。
解決問題
竟然知道了問題就開始解決問題。
當(dāng)Mybatis的xml文件不在resouce下時(shí)該如何配置。
Mybatis中如果xml文件不在resource目錄下的話,默認(rèn)打包是會(huì)被忽略的,所以需要在pom文件中加一段配置。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>改完這個(gè)后重新build一下,注意去查看下target文件夾下是否xml文件。
如何去指定mapper-Location的配置
mybatis-plus: mapper-locations: classpath*:top/**/*.xml ## top是我具體文件夾可以不要, **的意思代表一個(gè)或者多個(gè)目錄
classpath*跟classpath的區(qū)別是啥
這個(gè)問題是重點(diǎn)要考的記一下,帶*的話會(huì)掃描jar包下面的文件,不帶*只會(huì)掃描當(dāng)前項(xiàng)目。
Invalid bound statement (not found)出現(xiàn)的原因是什么?如何排查這個(gè)問題
這個(gè)報(bào)錯(cuò)的出現(xiàn),就是代表你的mapper文件跟xml映射不到。如果你確保你的框架沒有問題下,其它的代碼都能映射得到的情況,那么你就要注意了,首先你的xml文件的名字跟Mapper文件是不是一致的,方法名跟xml的id是不是一致的。如果你這兩個(gè)都對(duì)了,再去查你的mapper-locations的配置,這里沒問題,再去查編譯包??纯?code>xml編譯到了不。如果這些都沒問題。那人跟代碼只要一個(gè)能跑就行。
總結(jié)
其實(shí)使用xml跟使用注解的形式都能完成需求,沒多大的區(qū)別。但是使用xml的可讀性,以及易維護(hù)性。個(gè)人覺得比注解方式強(qiáng)太多了。此次問題的出現(xiàn),關(guān)鍵在于架構(gòu)的改變,架構(gòu)者一想把xml從resource移除,二又想把業(yè)務(wù)模塊熱插拔。這個(gè)想法是好的。但是做事做一半真的不太可取。
到此這篇關(guān)于SpringBoot使用MyBatis-Plus解決Invalid bound statement異常的文章就介紹到這了,更多相關(guān)SpringBoot 異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA使用教程從入門到上癮(2019圖文版)
這篇文章主要介紹了IntelliJ IDEA使用教程從入門到上癮(2019圖文版),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12
SpringBoot使用slf4j日志并輸出到文件中的操作方法
這篇文章主要介紹了SpringBoot使用slf4j日志并輸出到文件中,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Spring?MVC中JSON數(shù)據(jù)處理方式實(shí)戰(zhàn)案例
Spring MVC是個(gè)靈活的框架,返回JSON數(shù)據(jù)的也有很多五花八門的方式,下面這篇文章主要給大家介紹了關(guān)于Spring?MVC中JSON數(shù)據(jù)處理方式的相關(guān)資料,需要的朋友可以參考下2024-01-01
簡(jiǎn)單了解Java關(guān)鍵字throw和throws的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解Java關(guān)鍵字throw和throws的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java靜態(tài)代理和動(dòng)態(tài)代理總結(jié)
這篇文章主要介紹了Java靜態(tài)代理和動(dòng)態(tài)代理總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
SpringBoot打包發(fā)布到linux上(centos 7)的步驟
這篇文章主要介紹了SpringBoot打包發(fā)布到linux上(centos 7)的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-12-12
Spring Security基于自定義的認(rèn)證提供器實(shí)現(xiàn)圖形驗(yàn)證碼流程解析
這篇文章主要介紹了Spring Security基于自定義的認(rèn)證提供器實(shí)現(xiàn)圖形驗(yàn)證碼,通過本文學(xué)習(xí)下AuthenticationProvider接口的類關(guān)系圖,感興趣的朋友跟隨小編一起看看吧2021-09-09
詳解springMVC之與json數(shù)據(jù)交互方法
本篇文章主要介紹了詳解springMVC之與json數(shù)據(jù)交互方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05

