在做查询功能的时候,数据库MySQL中有时间序列字段,于是我在MySQL中把它定义成了timestamp
类型
但是我使用Mybatis-plus
自己生成po类时,它定义的却是java.time.LocalDateTime
类型,我用jackson
进行全局时间格式配置,他也会产生乱码。
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss.SSS
"creationDate": "2023-0318 14:54:36",
"lastUpdatedBy": "PHR",
"lastUpdatedDate": null
后面查了资料才发现:
Mybatis-Plus 默认情况下会将数据库中 timestamp 类型的字段映射为 Java 对象中的 LocalDateTime 类型。这也是符合 Java 8 及其以上版本的 java.time 标准库中关于日期时间的最佳实践。
如果你不想使用 LocalDateTime,可以通过配置 Mybatis-Plus 的全局配置来修改映射规则,例如将 timestamp 映射为 Date 类型:
mybatis-plus:
configuration:
# 全局配置
global-config:
# 配置映射策略为 FieldStrategy.NOT_NULL,即非空字段参与 SQL 语句的生成
db-config:
id-type: auto
logic-delete-value: 1
logic-not-delete-value: 0
field-strategy: not_null
table-prefix: t_
# 配置映射策略,将 timestamp 映射为 Date 类型
# 其他类型映射可以参考 https://baomidou.com/guide/types.html
map-underscore-to-camel-case: true
date-format: yyyy-MM-dd HH:mm:ss
db-column-underline: true
db-type: mysql
db-encrypt-password: false
db-decimal-scale: 2
db-rounding-mode: HALF_UP
entity-map: date:java.util.Date
我最后还是把po类的时间变量修改成了java.sql.Timestamp
类型,然后在jackson
时间配置上后面加多了个.SSS
jackson:
date-format: yyyy-MM-dd HH:mm:ss.SSS
完美解决!