• springboot~mybatis里localdatetime序列化问题


    问题起因

    主要是使用mybatis作为ORM之后,返回的对象为Map,然后对于数据库的datetime,datestamp类型返回为时间戳而不是标准的时间,这个问题解决方案有两种,大叔分析一下:

    1. 在mapper的select里,使用mysql这些数据库的函数,dateformat进行转化,缺点,单元测试里使用h2数据库时会找不到这些函数
    2. 在ObjectMapper反序列化时统一进行处理,这种方式更好,与具体数据库解耦了

    实现

    引用依赖包

      'org.mybatis:mybatis-typehandlers-jsr310:1.0.2',
      'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.2'
    

    添加组件类

    
    /**
     * 序列化localdatetime处理.
     */
    @Component
    public class JacksonConfig {
    
      /**
       * 注入时间处理.
       *
       * @return
       */
      @Bean
      @Primary
      public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JSR310Module());
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
        return mapper;
      }
    
    }
    

    成功解决问题

    {
        "pageCurrent": 1,
        "pageSize": 10,
        "pageTotal": 1,
        "data": [
            {
                "freeDays": 8,
                "city": "",
                "leadingPerson": "",
                "contactPerson": "zhangsan",
                "source": 1,
                "customerName": "i-counting",
                "intention": 1,
                "province": "",
                "appointmentTime": "2018-09-20T00:00:00.000Z",
                "createTime": "2018-09-27T06:33:49.000Z",
                "telephoneStatus": 1,
                "id": 10000,
                "contactPhone": "135"
            }
        ]
    }
    
  • 相关阅读:
    zlib 用了很多次,这次记下来
    boost 1.53 比1.52 ASIO bug 修正
    64位汇编
    js C++
    这个split 不错 我喜欢的
    布6月26日至28日将在旧金山召开2013年Build大会
    asio同步模式和异步模式
    vc6 编译boost
    windows 编译mongodb 2.4
    ajaxToolKit中 的折叠面板用法Accordion
  • 原文地址:https://www.cnblogs.com/lori/p/9755985.html
Copyright © 2020-2023  润新知