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"
        }
    ]
}
posted @   张占岭  阅读(5376)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2016-10-08 异步与并行~ReaderWriterLockSlim实现的共享锁和互斥锁
2014-10-08 缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续
2014-10-08 缓存篇(Cache)~第一回 使用static静态成员实现服务器端缓存(导航面包屑)
2012-10-08 分层中的~条件过滤~每个层对于“条件过滤”的职责
点击右上角即可分享
微信分享提示