实际开发(前后端交互)---localdatetime与string相互转化配置

在我们前后端分离开发的项目中后端返回的VO(实体类)定义的实体类型是java.time.LocalDateTime但是前端想要接收一个String类型 那样我们可能需要定义一个重复的字段进行单独的转化  或者说前端给我们一个String类型 后端想要存入数据库是DateTime类型也需要进行转化,这样就会增加相同的代码,非常冗余,啰嗦!

那我们就可以定义一个通用配置类-------->  一劳永逸

package com.wuchuan.content.config;

import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Configuration
public class LocalDateTimeConfig {

    /*
     * 序列化内容
     *   LocalDateTime -> String
     * 服务端返回给客户端内容
     * */
    @Bean
    public LocalDateTimeSerializer localDateTimeSerializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }

    /*
     * 反序列化内容
     *   String -> LocalDateTime
     * 客户端传入服务端数据
     * */
    @Bean
    public LocalDateTimeDeserializer localDateTimeDeserializer() {
        return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }


    // 配置
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> {
            builder.serializerByType(LocalDateTime.class, localDateTimeSerializer());
            builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer());
        };
    }

}

还有个注解可以帮我们接收前端给后端的表示时间的字符串 

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime legalCertDateStart;

@DateTimeFormat 是 Spring 框架中用于将字符串表示的日期时间转换为 LocalDateTime 对象的注解。

  1. 指定日期时间格式: 通过 pattern 属性,你可以指定期望的日期时间格式。在你的例子中,日期时间的格式是 "yyyy-MM-dd HH:mm:ss",表示年-月-日 时:分:秒的形式。

  2. 数据绑定: 当接收到请求参数时,Spring MVC 将尝试将请求中的日期时间字符串(例如,通过表单提交的字符串)转换为指定格式的 LocalDateTime 对象,并将其注入到对应的字段中。这是数据绑定的一部分,使得在控制器中能够方便地处理日期时间参数。

例如,如果你有一个表单,其中包含一个名为 legalCertDateStart 的输入字段,并用户输入了一个符合 "yyyy-MM-dd HH:mm:ss" 格式的日期时间字符串,Spring MVC 将尝试将这个字符串转换为 LocalDateTime 对象,并将其设置到 legalCertDateStart 字段上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值