欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mybatis如何使用Java8的日期LocalDate和LocalDateTime详解

程序员文章站 2024-02-28 15:43:52
前言 相信大家应该都知道,在实体entity里面,可以使用java.sql.date、java.sql.timestamp、java.util.date来映射到数据库的d...

前言

相信大家应该都知道,在实体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) 
 ... 81 common frames omitted 

解决方法如下:

直接加入如下依赖

<dependency> 
 <groupid>org.mybatis</groupid> 
 <artifactid>mybatis-typehandlers-jsr310</artifactid> 
 <version>1.0.1</version> 
</dependency> 

配置好这个依赖之后,就可以把entity里面的date替换成localdate、localdatetime了,其他的不用改

public class user { 
 private integer id; 
 private string name; 
 private localdate createdate; 
 private localdatetime createtime; 
} 

以上仅在mybatis 3.4.0版本中测试有效

如果使用的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> 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。