Java使用Dozer过程中的Timestamp属性格式化显示

Dozer是一个开源的、实现JavaBean与JavaBean之间映射的框架。它可以方便地从一个对象拷贝属性值到另一个对象中去,当然前提是你得了解和遵循它的规则。参考链接:https://github.com/DozerMapper/dozer;用户指南:Dozer用户手册。

熟悉Dozer之后,会发现它为我们提供了很多强大的copy功能,其中不乏类型转换。最常见的莫过于我们常用的Date与String之间的转换了。当我们MySql的表中有个datetime字段,如果你使用Date类型的属性去接收,存在一个手动格式化的过程,才能显出需要的“yyyy-MM-hh HH:mm:ss”格式,当然你使用Timestamp也是存在同样的问题。或许你会使用String类型的属性去接收,痛苦的是,显示的结果是“yyyy-MM-hh HH:mm:ss.0”,多余的“.0”还是需要去截取的。

使用了Dozer可以很方便地让我们规避上述的转换问题,当然使用Dozer的主要目的不仅在于此。Dozer可以帮我们把时间戳转为String类型并进行指定的格式化。只需要再Dozer的配置文件中加入如下的配置内容即可,这个自己在学习的过程中可以详细了解。


<configuration>
    <stop-on-errors>true</stop-on-errors>
    <date-format>yyyy-MM-dd HH:mm:ss</date-format>
    <wildcard>true</wildcard>
</configuration>

本人在使用的过程有一点没有留意,现在发现并记录下来。本人在项目开发中主要使用Dozer实现实体类到DTO类之间的映射转换,实体类中表示日期时间的属性采用Timestamp类型,预期该属性的值显示在界面时为“yyyy-MM-hh HH:mm:ss”格式,可自己想当然地在对应实体类的DTO类中,属性同样采用了Timestamp类型,导致界面显示时为时间戳。刚开始有些迷惑,竟然跳过了Dozer的格式化配置处理??后来自己仔细想想,是自己疏忽了,日期时间类型的数据经过格式化后处理现实,自然需要String来做。即使不使用Dozer,用Java的DateFormat在format后返回的也是String。所以将DTO类中属性Timestamp类型改为了String类型,Dozer会自动帮你做转换和格式化的操作。

ps:当String to Timestamp时,String的值应为“yyyy-MM-hh HH:mm:ss”格式,如果只是“yyyy-MM-hh”会报错。
Dozer是个很灵活的框架,如果它提供的转换功能不能满足你的需求的话,OK,自力更生,实现Dozer提供的CustomConvert接口,自定义转换逻辑。下面贴出用户指南中的代码示例。
Java使用Dozer过程中的Timestamp属性格式化显示_第1张图片

你可能感兴趣的:(java,Timestamp,Dozer)