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>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: C# 实现抓取网站页面内容的实例方法