mybatis支持jdk8等localdate類型


大家知道,在實體Entity里面,可以使用java.sql.Date、java.sql.Timestamp、java.util.Date來映射到數據庫的date、timestamp、datetime等字段

但是,java.sql.Date、java.sql.Timestamp、java.util.Date這些類都不好用,很多方法都過時了。

Java8里面新出來了一些API,LocalDate、LocalTime、LocalDateTime 非常好用

默認的情況下,在mybatis里面不支持java8的時間、日期。直接使用,會報如下錯誤

Caused by: java.lang.IllegalStateException: No typehandler found for property createTime
    at org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:151)
    at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:140)
    at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:382)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:378)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:280)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)

解決方法如下:

 直接加入如下依賴

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-typehandlers-jsr310</artifactId>
    <version>1.0.1</version>
</dependency>

如果使用的mybatis版本低於3.4.0,則還需要配置如下:

<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>

注意: 可能出現mybatis全局配置在jar包中情況,那么需要查找spring加載mybatis全局配置文件的位置,並覆蓋它即可.

如下:

classpath:conf/mybatis-config.xml是指定jar包中的xml配置,我們在resources目錄創建同級結構文件就可以覆蓋它.將類型處理器配置上即可

 

 

 


免責聲明!

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



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