Created At : 2021-12-28
Last Updated: 2021-12-28
如何解决MySQL中datetime类型返回的Java LocalDateTime日期时间数据中带有T
当我们Mysql数据库中的日期时间类型为datetime时,如果Java端使用LocalDateTime接收,通过JSON返回数据是,日期中会有讨厌的T。
例如数据库中为:2021-12-28 13:12:29
, 会返回: 2021-12-28T13:12:29
。
如何解决呢? 有四种方案供参考:
yaml配置文件修改
spring:
jackson:
#格式化返回时间 yyyy-MM-dd HH:mm:ss
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
使用JsonFormat注解
@Data
public class BaseEntity implements Serializable {
/**
* 插入时自动充填
*/
@TableField(value = "create_time",fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
/**
* 更新时自动充填
*/
@TableField(value = "update_time",fill = FieldFill.UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
}
MappingJackson2HttpMessageConverter全局处理
@Configuration
public class JacksonConfig {
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
converter.setObjectMapper(mapper);
return converter;
}
}
使用正则处理
// replace去掉T ;
当前时间.replace(/T/g, ' ').replace(/.[\d]{3}Z/, ' ')
由于我的项目中定义了BaseEntity,因此使用了方法2,通过@JsonFormat注解进行处理。