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。