Java 8 LocalDate mapping with mybatis
Look here: https://github.com/mybatis/typehandlers-jsr310
If you are using mybatis version 3.4 or later, you can simply add this artifact on your classpath and MyBatis will automatically register the provided type handlers.
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.0</version>
</dependency>
If you are using an older version you need to register the type handlers manually.
<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>
UPD:
Type handlers for "JSR 310: Date and Time API" has been merged into mybatis core since 3.4.5.(See #974)
For my current project I've created mappers for Java 8 time API classes.
You can see my implementation here jneat/mybatis-types
Please, look here: http://mybatis.github.io/mybatis-3/configuration.html#typeHandlers
To use LocalDate and Timestamp you have to write a custom typeHandler, like this:
// ExampleTypeHandler.java
@MappedTypes(LocalDate.class)
public class LocalDateTypeHandler extends BaseTypeHandler<LocalDate> {
//implement all methods
}
config your config.xml like this:
<!-- mybatis-config.xml -->
<typeHandlers>
<typeHandler handler="your.package.LocalDateTypeHandler"/>
</typeHandlers>
It should help.