前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot系列之自定义Jackson对象映射器格式日期数据

SpringBoot系列之自定义Jackson对象映射器格式日期数据

作者头像
SmileNicky
发布2023-11-03 08:25:10
2090
发布2023-11-03 08:25:10
举报
文章被收录于专栏:Nicky's blogNicky's blog

开发环境

  • JDK 1.8
  • SpringBoot2.2.1
  • Maven 3.2+
  • Mysql5.7.36
  • 开发工具
    • IntelliJ IDEA
    • smartGit

背景

在我之前的博客中,有对Springboot2.0集成Mybatis Plus做了比较详细的描述,现在这篇博客介绍,基于开源的jackson api来自定义ObjectMapping(对象映射器),实现对实体类中的日期数据,统一格式化处理

问题描述

我们定义一个实体类

代码语言:javascript
复制
@Data
public class UserDO {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    
    private String name;
    
    private Integer age;
    
    private String email;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime modifyTime;
    
}

通过mybatisplus统一写好接口,返回,这个LocalDateTime的日期都是如图所示这样的,所以都需要手工格式化处理

解决方案

在jackson中,可以通过自定义ObjectMapping实现对日期格式的数据统一处理,通过Jackson2ObjectMapperBuilderCustomizer统一对LocalDateLocalDateTime做格式化处理

代码语言:javascript
复制
package com.example.mybatisplus.configuration;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.format.DateTimeFormatter;

@Configuration
@MapperScan("com.example.mybatisplus.mapper")
public class MybatisPlusConfiguration {

    private static final String dateFormat = "yyyy-MM-dd";

    private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";

    @Bean
    @ConditionalOnProperty(value = "spring.jackson.date-format", matchIfMissing = true, havingValue = "none")
    public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
        return builder -> builder.serializationInclusion(JsonInclude.Include.NON_NULL)
                .simpleDateFormat(dateTimeFormat)
                .serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)))
                .serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发环境
  • 背景
  • 问题描述
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档