javascript
SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题
SpringBoot踩坑記錄
Invalid bound statement (not found)引發(fā)的一些列問題
當(dāng)你開開心心搭建了一個(gè)SpringBoot項(xiàng)目,用插件生成了entity、dao、mapper,寫下第一個(gè)Controller準(zhǔn)備試一下,結(jié)果卻發(fā)現(xiàn)一條簡(jiǎn)單的查詢報(bào)錯(cuò)了。
{"timestamp": "2019-03-18 16:21:48","status": 500,"error": "Internal Server Error","message": "Invalid bound statement (not found): com.xxx.dao.UserMapper.selectByPrimaryKey","path": "/test"}經(jīng)過排查,發(fā)現(xiàn)target/classes/包名目錄下不存在mapper文件夾,一個(gè)令人傷心的事情。
? 于是我們知道了關(guān)鍵所在,怎么把mapper下的xml文件打包進(jìn)去。通過查閱資料,我們知道了解決這個(gè)問題通常有兩個(gè)思路:
1.將mapper放在src/main/resource 目錄下,這個(gè)目錄下默認(rèn)是會(huì)打包進(jìn)去的。
2.在pom文件的
<build></build>節(jié)點(diǎn)內(nèi),添加一段
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><!-- 是否替換資源中的屬性--><filtering>false</filtering></resource> </resources>3.當(dāng)你打包時(shí),手動(dòng)把xml文件所在的mapper文件夾丟進(jìn)target/classes/包名/目錄下。需要丟一次+運(yùn)行一次就好了
以上3種方法我只試過下面兩種,上面那種雖然沒有確切放過xml文件,但是其他類文件的存放以及打包倒是用過,這個(gè)后面再說(shuō)。
現(xiàn)在來(lái)確切說(shuō)說(shuō)第二種。這里是有坑的
坑.1 配置過度導(dǎo)致?lián)炝酥ヂ閬G了西瓜
比如,會(huì)在別處看到一些這樣的配置。實(shí)際上src/main/resources下的文件都會(huì)被打包,如果把圖中那段注釋解開,你會(huì)發(fā)現(xiàn)除了xml和properties文件,其他東西都沒打包進(jìn)去(如果你使用的是yml配置,那么yml也不會(huì)被打包進(jìn)去),圖中的這位博主估計(jì)也是發(fā)現(xiàn)了這段代碼的弊大于利。
這里就牽扯出一個(gè)問題了。如果我的項(xiàng)目中resource下只有xml,和properties文件,這段配置也無(wú)傷大雅咯?是的,的確是這樣,templates和static下似乎是能打包進(jìn)去的。
在解決了xml打包之后,我們迫不及待的繼續(xù)打包運(yùn)行,發(fā)現(xiàn)依舊是那個(gè)報(bào)錯(cuò),emmmmmmm,這讓人不禁有些頭大。翻開前輩的項(xiàng)目,發(fā)現(xiàn)了在yml下,還配置了mybatis
mybatis:mapper-locations: classpath:com/xx/xxx/mapper/**/*.xmltype-aliases-package: com.xx.xxx.entityconfiguration:cache-enabled: false坑.2 Mybatis路徑配置須小心
當(dāng)看到路徑里mapper/**/*.xml時(shí),不知怎么的,我就自作聰明把mapper給刪掉了,/**/*.xml,看似是指向下一級(jí)目錄的xml文件,但是當(dāng)你自作聰明的刪掉了這里之后,你會(huì)發(fā)現(xiàn)xml雖然打包進(jìn)去了,但是你的dao依然找不到mapper,還是報(bào)錯(cuò)。
血的教訓(xùn)啊,童鞋們切記這個(gè)路徑是:包名/xml所在目錄/**/*.xml
總結(jié)
以上是生活随笔為你收集整理的SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++17(12)-raw string
- 下一篇: android自动化测试之robotiu