?作者簡介:大家好,我是Leo,熱愛Java后端開發(fā)者,一個想要與大家共同進步的男人????
??個人主頁:Leo的博客
??當前專欄: 報錯以及Bug
?特色專欄: MySQL學習
??本文內(nèi)容:記錄一次Docker與Redis沖突
???個人小站 :個人博客,歡迎大家訪問
??個人知識庫: 知識庫,歡迎大家訪問
1.前言背景
大家好,我是Leo哥??????,最近在學習SpringBoot3相關(guān)的的代碼,開發(fā)過程中遇到了一些小坑,不過很快都解決了。然后就用 SpringBoot3 版本寫了幾個小 demo,比如 Web 開發(fā)、連接 數(shù)據(jù)庫、使用 JdbcTemplate 操作數(shù)據(jù)庫,編碼和測試都非常順利,雖然是從 SpringBoot 2.x 版本升級到SpringBoot3,但是沒有感覺到太多差別。
不過,在使用 SpringBoot3 整合 MyBatisplus 時出現(xiàn)了一些問題,花了不少時間處理。
2.開發(fā)環(huán)境
因為這邊想學習一下關(guān)于SprigBoot3的一些特性,我這里是從原來的SpringBoot2.3.6升級到了SpringBoot3.0。
使用的版本如下所示。
- Spring Boot 版本配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.3</version>
</parent>
- MyBatis 版本配置
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
3.問題出現(xiàn)
當一切都配置完成之后,啟動項目之后,直接報錯,這里直接把報錯相關(guān)的貼出來。
當然,異常信息挺多,比如無法創(chuàng)建 Bean 的異常等等,不過上面的幾個異常并不是問題主因。這里我直接定位到最后的異常上,異常信息是:
Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
于是我們跟入代碼發(fā)生異常的地方。
問題原因也很明顯,sqlSessionTemplate 對象是空的,所以這邊就直接報錯了。
4.問題排查
當然,由于把 SpringBoot 版本升級到 3 了,所以會覺得有很大的可能是版本升級導致了問題。
不過還是想自己查查問題,就依次檢查了代碼、數(shù)據(jù)庫配置、MyBatisPlus 配置,都沒有發(fā)現(xiàn)哪里寫錯了,接著就沒頭緒了。之后就通過源碼Debug了一下,順著啟動流程走了一下,在SqlSessionFactoryBean這里發(fā)現(xiàn)了問題,NestedIOException這個類爆紅了,正常情況下肯定是不會報錯的。
說明肯定是因為我們dataSource數(shù)據(jù)源的問題,于是我又重新檢查了一下代碼。最終在啟動類發(fā)現(xiàn)了問題。
下面我貼出截圖
在SpringBoot應用程序啟動類上加上(exclude = {DataSourceAutoConfiguration.class})會排除數(shù)據(jù)源的自動配置,這意味著我們需要手動配置數(shù)據(jù)源和事務管理器等依賴項。
如果使用MyBatis等持久層框架進行數(shù)據(jù)庫操作,通常需要進行以下兩個步驟:
- 配置數(shù)據(jù)源:在配置文件中設置數(shù)據(jù)庫連接信息,例如連接URL、用戶名、密碼等。
- 配置SqlSessionFactory和SqlSessionTemplate:這兩個對象是MyBatis框架中用于操作數(shù)據(jù)庫的核心組件。SqlSessionFactory用于創(chuàng)建SqlSession實例,SqlSessionTemplate是對SqlSession的一種封裝,提供了更加簡單易用的API接口。
如果SqlSessionTemplate對象為空,可能有以下幾種原因:
- 沒有正確配置數(shù)據(jù)源:如果我們沒有正確配置數(shù)據(jù)源,SqlSessionFactory和SqlSessionTemplate就無法正常創(chuàng)建。需要確保配置文件中的數(shù)據(jù)庫連接信息正確,并且已經(jīng)將數(shù)據(jù)源和事務管理器納入到Spring容器中。
- 沒有正確配置SqlSessionFactory和SqlSessionTemplate:即使我們已經(jīng)正確配置了數(shù)據(jù)源和事務管理器,但是如果沒有正確配置SqlSessionFactory和SqlSessionTemplate,也會導致SqlSessionTemplate對象為空。需要檢查一下SqlSessionFactory是否已經(jīng)成功創(chuàng)建,并且使用了正確的MyBatis配置文件。
- 沒有將SqlSessionTemplate納入到Spring容器中:在Spring Boot應用程序中,我們需要將SqlSessionTemplate對象納入到Spring容器中,這樣才能在其他組件中自動注入SqlSessionTemplate對象。需要確保已經(jīng)在配置文件中正確配置了MyBatis相關(guān)的Bean,并且使用了正確的注解或XML配置方式來將SqlSessionTemplate納入到Spring容器中。
需要注意的是,這里所說的原因并不全面,具體問題需要根據(jù)實際情況來進行排查分析。
我這里把這個注釋掉之后,項目就正常啟動了,大家可以參考一下。
5.總結(jié)
以上便是本文的全部內(nèi)容,本人才疏學淺,文章有什么錯誤的地方,歡迎大佬們批評指正!我是Leo,一個在互聯(lián)網(wǎng)行業(yè)的小白,立志成為更好的自己。文章來源:http://www.zghlxwxcb.cn/news/detail-743944.html
如果你想了解更多關(guān)于Leo,可以關(guān)注公眾號-程序員Leo,后面文章會首先同步至公眾號。文章來源地址http://www.zghlxwxcb.cn/news/detail-743944.html
到了這里,關(guān)于Springboot3整合Mybatis-plus3.5.3報錯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!