mybatis映射date类型,使用mybatis进行Java 8 LocalDate映射

在Java项目中,当使用MyBatis与SQL Server交互时,遇到LocalDate字段无法正确映射的问题。当字段声明为java.util.Date时,数据能正常获取,但改为java.time.LocalDate后,这些字段变为null。原因可能是MyBatis默认不支持LocalDate与Timestamp的映射。解决方法是自定义一个LocalDateTypeHandler,并在配置文件中进行设置,以实现LocalDate与数据库之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I am using java.time.LocalDate (Java 8) to represent some of the member fields in a Java class.

class Test{

private LocalDate startDate;

private LocalDate endDate;

//other fields

//getters and setters

}

I am also using mybatis, to interact with my database.

On retrieving some data from the DB, all other fields get populated properly,

but the startDate and endDate fields end up as null.

If ,however, I use java.util.Date, as in,

private Date startDate;

private Date endDate;

I get the proper values retrieved in these two fields (startDate and endDate) when I declare them as java.util.Date.

Is it because mybatis does not currently have a mappping of 'Timestamp'(SQL Server) to java.time ?

How should I go about using java.time.LocalDate to map with MyBatis ?

解决方案

To use LocalDate and Timestamp you have to write a custom typeHandler, like this:

// ExampleTypeHandler.java

@MappedTypes(LocalDate.class)

public class LocalDateTypeHandler extends BaseTypeHandler {

//implement all methods

}

config your config.xml like this:

It should help.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值