Mybatis映射實體, 解決LocalDateTime格式轉換問題

應用場景:  Mybatis映射成實體, 返給前端 LocalDateTime 格式數據顯示不友好

解決方案:  通過 實體註解 和 mapperObject Bean 解決

步驟一:  實體註解:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
package com.rry.miniprogram.operation.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.io.Serializable;

/**
 * <p>
 * 小程序ext參數配置
 * </p>
 *
 * @author bchen
 * @since 2021-04-26
 */
public class MExtjs implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "extjs_id", type = IdType.AUTO)
    private Long extjsId;

    private String remark;

    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    public Long getExtjsId() {
        return extjsId;
    }

    public void setExtjsId(Long extjsId) {
        this.extjsId = extjsId;
    }
   
    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
}

步驟二: 設置 mapperObject

/**
 * 使用此方法, 全局處理實體 LocalDateTime 返回實體問題 需要在配置類: @Configuration
 * */
@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;
}

經測試, 解決問題;

之前都是使用Map, 單獨寫SQL處理, 新的項目,接入了 MyBatis-Plus , 用了實體, 總之各有利弊, 自我感覺沒有Map靈活, 慢慢習慣吧, 怎麼搬磚都是搬, 加油打工人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章