zoukankan      html  css  js  c++  java
  • LocalDateTime反序列化,LocalDateTime格式化

    • 使用mybatis-plus的时候出现了LocalDateTime类(jdk8 中新出现的类
    • 那么我在反序列化的时候出了问题。

    我在springboot 2.1.3 中使用以下类结局问题)

    • 用到了下面这个类解决了所有的问题。包括前端传值过来也能直接接受字符串
    • 百度上面也猜了许许多多的坑 最终换了一个spring boot的版本 然后用以下的代码配置完美解决了问题
    
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.format.Formatter;
    
    import java.text.ParseException;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.format.DateTimeFormatter;
    import java.util.Locale;
    
    /**
     * 接收时间配置bean
     */
    @Configuration
    public class LocalDateTimeFormatConfig {
    
        @Bean(name = "mapperObject")
        public ObjectMapper getObjectMapper() {
            ObjectMapper om = new ObjectMapper();
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
            om.registerModule(javaTimeModule);
            return om;
        }
    
        @Bean
        public Formatter<LocalDate> localDateFormatter() {
            return new Formatter<LocalDate>() {
                @Override
                public String print(LocalDate object, Locale locale) {
                    return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                }
    
                @Override
                public LocalDate parse(String text, Locale locale) throws ParseException {
                    return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                }
            };
        }
    
        @Bean
        public Formatter<LocalDateTime> localDateTimeFormatter() {
            return new Formatter<LocalDateTime>() {
                @Override
                public String print(LocalDateTime object, Locale locale) {
                    return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
                }
    
                @Override
                public LocalDateTime parse(String text, Locale locale) throws ParseException {
                    return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
                }
            };
        }
    
        @Bean
        public Formatter<LocalTime> localTimeFormatter() {
            return new Formatter<LocalTime>() {
                @Override
                public String print(LocalTime object, Locale locale) {
                    return object.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
                }
    
                @Override
                public LocalTime parse(String text, Locale locale) throws ParseException {
                    return LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss"));
                }
            };
        }
     
    }
    
  • 相关阅读:
    验证整数 Double 转 int 两种写法
    0 can't find referenced pointcut declarePointExpress
    nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed
    org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML doc
    嵌入式系统(胡威)2019年春第一次作业 参考答案
    PAT(B) 1021 个位数统计(Java)
    PAT(B) 1020 月饼(Java)
    PAT(B) 1019 数字黑洞(Java)
    PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)
    PAT(B) 1017 A除以B(Java)
  • 原文地址:https://www.cnblogs.com/rolandlee/p/10513025.html
Copyright © 2011-2022 走看看