應用場景: 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靈活, 慢慢習慣吧, 怎麼搬磚都是搬, 加油打工人