1. 程式人生 > >springboot整合mybatis遇到的那些坑

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註解才行。

// TODO:為啥後兩個不行?

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

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

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


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>

3.控制檯報The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or ...
參見https://blog.csdn.net/tai4lin/article/details/83504479。

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