LocalDateTime反序列化,LocalDateTime格式化

清疚 2021-12-23 11:45 343阅读 0赞
  • 使用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() {

      1. ObjectMapper om = new ObjectMapper();
      2. JavaTimeModule javaTimeModule = new JavaTimeModule();
      3. javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      4. javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
      5. javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
      6. om.registerModule(javaTimeModule);
      7. return om;

      }

      @Bean
      public Formatter localDateFormatter() {

      1. return new Formatter<LocalDate>() {
      2. @Override
      3. public String print(LocalDate object, Locale locale) {
      4. return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      5. }
      6. @Override
      7. public LocalDate parse(String text, Locale locale) throws ParseException {
      8. return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
      9. }
      10. };

      }

      @Bean
      public Formatter localDateTimeFormatter() {

      1. return new Formatter<LocalDateTime>() {
      2. @Override
      3. public String print(LocalDateTime object, Locale locale) {
      4. return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
      5. }
      6. @Override
      7. public LocalDateTime parse(String text, Locale locale) throws ParseException {
      8. return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
      9. }
      10. };

      }

      @Bean
      public Formatter localTimeFormatter() {

      1. return new Formatter<LocalTime>() {
      2. @Override
      3. public String print(LocalTime object, Locale locale) {
      4. return object.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
      5. }
      6. @Override
      7. public LocalTime parse(String text, Locale locale) throws ParseException {
      8. return LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss"));
      9. }
      10. };

      }

    }

转载于:https://www.cnblogs.com/rolandlee/p/10513025.html

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读