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。