SpringBoot使用MyBatis-Plus解決Invalid?bound?statement異常
前言
本篇文章主要介紹關(guān)于我在SpringBoot
中使用MyBatis-Plus
是如何解決Invalid bound statement (not found)
這個異常的。我先拋一些我在這個途中遇到的一些問題,看看各位了解不了解。
- 當
Mybatis
的xml
文件不在resouce
下時該如何配置。 - 如何去指定
mapper-Location
的配置。 classpath*
跟classpath
的區(qū)別是啥- Invalid bound statement (not found)出現(xiàn)的原因是什么
以上就是我遇到這個問題之后總結(jié)的三個問題。
緣由
作者來了一下新公司,這邊的框架看的我很悶,特別是關(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);
整個項目全是這種寫法,我一開始以為是規(guī)范。后面問了一個老員工才知道。說以前這個項目是寫在xml的,但是后面改了一下架構(gòu)之后xml的配置就掃描不到了。嗯嗯嗯…
這邊的項目結(jié)構(gòu),xml文件不是放在resouce
下,并且具體的業(yè)務(wù)包是跟maven
引入進去的(這個就是我前文提到的架構(gòu)改變了)。注意這兩個是重點。我猜測他們不會配置的點應(yīng)該就是這個原因了吧。
解決問題
竟然知道了問題就開始解決問題。
當Mybatis
的xml
文件不在resouce
下時該如何配置。
Mybatis
中如果xml文件不在resource
目錄下的話,默認打包是會被忽略的,所以需要在pom文件中加一段配置。
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
改完這個后重新build
一下,注意去查看下target文件夾下是否xml
文件。
如何去指定mapper-Location
的配置
mybatis-plus: mapper-locations: classpath*:top/**/*.xml ## top是我具體文件夾可以不要, **的意思代表一個或者多個目錄
classpath*
跟classpath
的區(qū)別是啥
這個問題是重點要考的記一下,帶*
的話會掃描jar包下面的文件,不帶*
只會掃描當前項目。
Invalid bound statement (not found)出現(xiàn)的原因是什么?如何排查這個問題
這個報錯的出現(xiàn),就是代表你的mapper
文件跟xml
映射不到。如果你確保你的框架沒有問題下,其它的代碼都能映射得到的情況,那么你就要注意了,首先你的xml
文件的名字跟Mapper
文件是不是一致的,方法名跟xml
的id
是不是一致的。如果你這兩個都對了,再去查你的mapper-locations
的配置,這里沒問題,再去查編譯包??纯?code>xml編譯到了不。如果這些都沒問題。那人跟代碼只要一個能跑就行。
總結(jié)
其實使用xml
跟使用注解的形式都能完成需求,沒多大的區(qū)別。但是使用xml
的可讀性,以及易維護性。個人覺得比注解方式強太多了。此次問題的出現(xiàn),關(guān)鍵在于架構(gòu)的改變,架構(gòu)者一想把xml
從resource
移除,二又想把業(yè)務(wù)模塊熱插拔。這個想法是好的。但是做事做一半真的不太可取。
到此這篇關(guān)于SpringBoot使用MyBatis-Plus解決Invalid bound statement異常的文章就介紹到這了,更多相關(guān)SpringBoot 異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微服務(wù)搭建集成Spring Cloud Turbine詳解
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),最終給開發(fā)者留出了一套簡單易懂、易部署和易維護的分布式系統(tǒng)開發(fā)工具包。下面我們來詳細了解一下吧2019-06-06SpringBoot2零基礎(chǔ)到精通之映射與常用注解請求處理
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學習映射、常用注解和方法參數(shù)的小技巧2022-03-03mybatis使用@mapkey獲取的結(jié)果的鍵(key)為null問題
這篇文章主要介紹了mybatis使用@mapkey獲取的結(jié)果的鍵(key)為null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的全過程
多租戶是一種軟件架構(gòu)技術(shù),在多用戶的環(huán)境下,共有同一套系統(tǒng),并且要注意數(shù)據(jù)之間的隔離性,下面這篇文章主要給大家介紹了關(guān)于基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-02-02