springboot整合mybatis遇到的那些坑


1.接口類(指*Mapper.java)在spring中注冊的問題

當控制台打印如下信息:

A component required a bean named '*Mapper' that could not be found.

意思是spring找不到這個bean,也就是說這個類沒有在spring中注冊。親測可用的解決辦法有兩個:

(1)給接口類加上@Mapper注解

加@Repository或者@Component都不管用,必須得@Mapper注解才行。

(2)在啟動類上加@MapperScan注解

需要傳入接口類所在包的路徑參數,例如@MapperScan("com.example.demo.**.dao")。可傳入多個路徑,之間以逗號分隔即可。

兩種方法比較起來,第一種方法需要在每個類上都添加@Mapper注解,所以第二種比較簡潔,只需在啟動類上添加一次即可。

1月23日補充:@Mapper和@MapperScan注解都是mybatis的注解,而@Component和@ComponentScan注解都是spring的,在mybatis的應用場景下,用mybatis的注解。


2.項目build之后,在target/classes下沒有對應的映射文件(指*Mapper.xml)的問題

這種問題在啟動時沒什么異常,但是當你調用這個mapper的方法時就會拋出:

BindingException: Invalid bound statement (not found)

解決辦法是在pom.xml(maven項目)中的build標簽里加入:

<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
1月24日補充:“<include>**/*.xml</include>”可根據情況修改。

3.控制台報The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or ...
在數據庫url后面加上“?serverTimezone=GMT%2B8”,一勞永逸。

4.沒有配置Mybatis
參見https://my.oschina.net/yangok/blog/1923209。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM