欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯(cuò)誤問題

 更新時(shí)間:2025年01月09日 10:40:40   作者:嘿;-)翔  
本文主要講述了在使用MyBatis和MyBatis-Plus時(shí)遇到的綁定異常問題,通過排查和總結(jié),作者發(fā)現(xiàn)使用MyBatis-Plus?Boot?Starter可以解決這個(gè)問題,文章詳細(xì)對(duì)比了MyBatis-Plus?Boot?Starter和MyBatis?Spring?Boot?Starter的功能和使用場(chǎng)景

mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯(cuò)誤

不是知道你是否 出現(xiàn)過這樣的錯(cuò)誤

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 

經(jīng)過各種度娘,無非就是讓你檢查三種情況

  • 情況一:mapper.xml沒有按照傳統(tǒng)的maven架構(gòu)進(jìn)行放置
  • 情況二:mybatis的配置信息出錯(cuò)
  • 情況三:idea的編譯問題,idea有的時(shí)候沒有編譯生成相應(yīng)的xml。在idea的target->classes下面沒有找到相應(yīng)的存在xml的文件夾,該文件夾里面有沒有對(duì)應(yīng)的mapper(實(shí)體名).xml文件

如果 程序中這三種情況都沒有出現(xiàn) ,那么,再看看 我遇到的問題。

首先我那個(gè)是個(gè)單元測(cè)試 這個(gè)時(shí)候我的數(shù)據(jù)是能出來的,但是。。。。

細(xì)心的同學(xué)可能發(fā)現(xiàn)了 如果字段沒有加 as做別名映射,實(shí)體類字段是不能被賦值的。

于是,是不是實(shí)體類上加上@TableName @TableField 就好了,于是我加上了。。。

此時(shí)我引用的依賴是

<dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </dependency>

但是 @TableName @TableField 的包是com.baomidou.mybatisplus.annotation里邊的 所以要更改引用依賴

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.1</version>
            </dependency>

一切準(zhǔn)備就緒。。。??啟動(dòng)。。。

報(bào)錯(cuò)。。。。??

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.cdliker.infrastructure.persistent.dao.IAwardDao.getAwardPOList 

于是 排查了三種情況,都不符合。所以目標(biāo)就鎖定了 依賴上,

mybatis-plus-boot-starte與mybatis-spring-boot-starter的區(qū)別

1. 功能與特性

mybatis-plus-boot-starter:

  • 自動(dòng)配置:能夠自動(dòng)配置MyBatis-Plus,減少手動(dòng)配置的工作量。
  • CRUD操作簡(jiǎn)化:提供了一套默認(rèn)的Service和Mapper實(shí)現(xiàn),使得CRUD操作更加簡(jiǎn)便,減少了大量的樣板代碼。
  • 動(dòng)態(tài)SQL:支持動(dòng)態(tài)SQL,提供了豐富的查詢功能,使得構(gòu)建復(fù)雜查詢變得更加容易。
  • 代碼生成器:內(nèi)置代碼生成器,可以快速生成Entity、Mapper、Mapper XML、Service、ServiceImpl、Controller等代碼,提高開發(fā)效率。
  • 分頁插件:提供分頁插件,支持一鍵分頁,簡(jiǎn)化分頁查詢的實(shí)現(xiàn)。
  • 性能分析插件:提供性能分析插件,可以分析SQL執(zhí)行性能,幫助優(yōu)化SQL查詢。
  • 擴(kuò)展性:提供了豐富的擴(kuò)展點(diǎn),允許開發(fā)者根據(jù)需要進(jìn)行自定義擴(kuò)展。
  • 與Spring Boot集成:無縫集成Spring Boot,無需額外的配置,易于使用。

mybatis-spring-boot-starter:

  • 自動(dòng)配置:支持MyBatis的自動(dòng)配置,包括數(shù)據(jù)源、SqlSessionFactory和Mapper掃描等。
  • 簡(jiǎn)化配置:通過Spring Boot的自動(dòng)配置特性,大大簡(jiǎn)化了MyBatis的配置過程。
  • 常用功能:提供了配置數(shù)據(jù)源、生成MyBatis的SqlSessionFactory、掃描Mapper文件等常用功能。
  • 與Spring Boot協(xié)同工作:使MyBatis和Spring Boot更加容易協(xié)同工作,提高開發(fā)效率。

2. 使用場(chǎng)景

  • mybatis-plus-boot-starter:更適用于需要快速開發(fā)、簡(jiǎn)化CRUD操作、提高開發(fā)效率的Spring Boot項(xiàng)目。它提供了更多高級(jí)特性和擴(kuò)展點(diǎn),適合對(duì)數(shù)據(jù)庫操作有較多定制需求的場(chǎng)景。
  • mybatis-spring-boot-starter:適用于需要將MyBatis框架集成到Spring Boot項(xiàng)目中的基本場(chǎng)景。它提供了基本的自動(dòng)配置和常用功能,適合對(duì)數(shù)據(jù)庫操作要求不是特別復(fù)雜或需要快速集成的項(xiàng)目。

3. 依賴關(guān)系

值得注意的是,mybatis-plus-boot-starter在其內(nèi)部已經(jīng)包含了mybatis-spring-boot-starter的依賴(或者至少包含了與MyBatis集成所需的關(guān)鍵依賴),因此在大多數(shù)情況下,如果你選擇了mybatis-plus-boot-starter,就無需再額外引入mybatis-spring-boot-starter。這也是為什么在一些項(xiàng)目中,同時(shí)引入這兩個(gè)starter時(shí),移除其中一個(gè)并不會(huì)對(duì)項(xiàng)目運(yùn)行造成影響的原因。

綜上所述,mybatis-plus-boot-starter和mybatis-spring-boot-starter在功能和特性上有所區(qū)別,選擇哪個(gè)啟動(dòng)器主要取決于你的項(xiàng)目需求和對(duì)數(shù)據(jù)庫操作的具體要求。如果你需要更多的高級(jí)特性和擴(kuò)展性,可以選擇mybatis-plus-boot-starter;如果你只是需要基本的MyBatis集成功能,那么mybatis-spring-boot-starter就足夠了。

正常的三種情況 出發(fā)點(diǎn)都是掃描的問題,難道問題還在掃描?既然mybatis-plus包含mybatis 那么。。。

mybatis-plus-boot-starter 時(shí)遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 這樣的錯(cuò)誤,而切換到 mybatis-spring-boot-starter 后錯(cuò)誤消失,這通常意味著 MyBatis 或 MyBatis-Plus 在尋找或解析 Mapper 接口與其對(duì)應(yīng)的 XML 映射文件時(shí)出現(xiàn)了問題。可能會(huì)出現(xiàn)以下情況

1.Mapper 接口與 XML 映射文件的位置或命名不匹配:

確保 Mapper 接口和 XML 映射文件位于正確的包路徑下,并且文件名與接口名匹配(去掉接口名中的 I 前綴,并加上 .xml 后綴)。

檢查 XML 映射文件的 namespace 是否與 Mapper 接口的全限定名完全一致。

2.Mapper 掃描路徑未正確配置:

在 Spring Boot 配置中,確保你已經(jīng)正確配置了 Mapper 掃描路徑。這可以通過 @MapperScan 注解或在 application.properties/application.yml 文件中設(shè)置 mybatis-plus.mapper-locations 來實(shí)現(xiàn)。

如果你的 Mapper 接口和 XML 文件位于不同的包路徑下,你需要確保 @MapperScan 注解或配置屬性包含了所有這些路徑。

XML 映射文件未正確放置在資源目錄中:

確保 XML 映射文件被放置在 Spring Boot 項(xiàng)目的資源目錄(如 src/main/resources)中,并且其路徑與 Mapper 接口的路徑相對(duì)應(yīng)。

3.依賴沖突:

檢查你的項(xiàng)目依賴,確保沒有引入多個(gè)版本的 MyBatis 或 MyBatis-Plus,這可能會(huì)導(dǎo)致類加載器加載了錯(cuò)誤的類。

如果你的項(xiàng)目中同時(shí)包含了 mybatis-spring-boot-starter 和 mybatis-plus-boot-starter,確保只保留一個(gè),因?yàn)樗鼈兪腔コ獾摹?/p>

Spring Boot 的自動(dòng)配置問題:

有時(shí)候,Spring Boot 的自動(dòng)配置可能不會(huì)按預(yù)期工作。嘗試在 application.properties/application.yml 中顯式配置 MyBatis-Plus 的相關(guān)屬性,或者在你的配置類中手動(dòng)配置 SqlSessionFactory 和 MapperScannerConfigurer。

4.檢查 MyBatis-Plus 特有的配置:

如果你在使用 MyBatis-Plus 特有的功能(如分頁插件、自動(dòng)填充等),請(qǐng)確保你已經(jīng)按照 MyBatis-Plus 的要求進(jìn)行了配置。

5.IDE 或構(gòu)建工具的問題:

有時(shí)候,IDE(如 IntelliJ IDEA 或 Eclipse)或構(gòu)建工具(如 Maven 或 Gradle)可能沒有正確更新或同步你的項(xiàng)目配置。

嘗試重啟 IDE、重新構(gòu)建項(xiàng)目或清理并重新導(dǎo)入 Maven/Gradle 依賴。

6.查看日志和錯(cuò)誤堆棧:

仔細(xì)查看錯(cuò)誤堆棧和 Spring Boot 的啟動(dòng)日志,可能會(huì)有更多關(guān)于為什么 MyBatis 找不到綁定語句的線索。

配置,配置 application.properties/application.yml 文件中設(shè)置 mybatis-plus.mapper-locations 來實(shí)現(xiàn)

在使用 mybatis-spring-boot-starter 的時(shí)候 使用

mybatis:
  mapper-locations: classpath:/mybatis/mapper/*.xml
  config-location:  classpath:/mybatis/config/mybatis-config.xml

在使用 mybatis-plus-boot-starter 的時(shí)候 使用

mybatis-plus:
  mapper-locations: classpath:/mybatis/mapper/*.xml
  config-location:  classpath:/mybatis/config/mybatis-config.xml

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論