SpringBoot整合Mybatis LocalDateTime 映射失效
一、概述
最近在開發一個項目,在使用SpringBoot繼承Mybatis時,做單元測試時,由於需要根據參數(類型LocaDateTime)去更新數據,發現更新記錄爲0。剛開始以爲是沒有提交事務(Mybatis默認沒有開啓自動提交),後來句時,是能成功的。所以排除沒有提交事務。
二、具體原因
在實體PO類裏面,可以使用Java.sql.Date,Java.sql.Timestamp,java.util.Date來映射到數據庫date,timestamp,datetime。但是這些類許多方法都已經過時。
Java8的API的LocalDate,LocalDateTime,LocalTime,現在比較常用。但是,
我mybatis的版本(3.5.3)是不支持Java8的日期、時間。(默認情況下,Mybatis是不支持Java8的時間和日期)
三、解決辦法
1.引入類型轉換的依賴
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.1</version>
</dependency>
2.在Mybatis.config.xml文件配置
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.InstantTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler" />
<typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler" />
</typeHandlers>
四、總結
發現問題,並解決問題,也一種能力的提升。以上如果有錯,還望多多指正。