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

解決mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯誤問題

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

mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯誤

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

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

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

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

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

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

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

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

此時我引用的依賴是

<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>

一切準備就緒。。。??啟動。。。

報錯。。。。??

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

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

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

1. 功能與特性

mybatis-plus-boot-starter:

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

mybatis-spring-boot-starter:

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

2. 使用場景

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

3. 依賴關系

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

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

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

mybatis-plus-boot-starter 時遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 這樣的錯誤,而切換到 mybatis-spring-boot-starter 后錯誤消失,這通常意味著 MyBatis 或 MyBatis-Plus 在尋找或解析 Mapper 接口與其對應的 XML 映射文件時出現(xiàn)了問題??赡軙霈F(xiàn)以下情況

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

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

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

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

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

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

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

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

3.依賴沖突:

檢查你的項目依賴,確保沒有引入多個版本的 MyBatis 或 MyBatis-Plus,這可能會導致類加載器加載了錯誤的類。

如果你的項目中同時包含了 mybatis-spring-boot-starter 和 mybatis-plus-boot-starter,確保只保留一個,因為它們是互斥的。

Spring Boot 的自動配置問題:

有時候,Spring Boot 的自動配置可能不會按預期工作。嘗試在 application.properties/application.yml 中顯式配置 MyBatis-Plus 的相關屬性,或者在你的配置類中手動配置 SqlSessionFactory 和 MapperScannerConfigurer。

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

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

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

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

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

6.查看日志和錯誤堆棧:

仔細查看錯誤堆棧和 Spring Boot 的啟動日志,可能會有更多關于為什么 MyBatis 找不到綁定語句的線索。

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

在使用 mybatis-spring-boot-starter 的時候 使用

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

在使用 mybatis-plus-boot-starter 的時候 使用

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

總結(jié)

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

相關文章

最新評論