当前位置: 首页 > news >正文

java error(2)保存时间带时分秒,回显时分秒变成00:00:00

超简单,顺带记录一下

1.入参实体类上使用注释:@JsonFormat(pattern = “yyyy-MM-dd”) 导致舍弃了 时分秒的部分。
2.数据库字段对应的类型是 date。date就是日期,日期就不带时分秒。
3.返参实体类使用了@JsonFormat(pattern = “yyyy-MM-dd”) 导致舍弃了时分秒部分。

扩展
关于注解@JsonFormat

General-purpose annotation used for configuring details of how values of properties are to be serialized. Unlike most other Jackson annotations, annotation does not have specific universal interpretation: instead, effect depends on datatype of property being annotated (or more specifically, deserializer and serializer being used). <p> Common uses include choosing between alternate representations -- for example, whether {@link java.util.Date} is to be serialized as number (Java timestamp) or String (such as ISO-8601 compatible time value) -- as well as configuring exact details with {@link pattern} property. <p> As of Jackson 2.6, known special handling includes: <ul> <li>{@link java.util.Date}: Shape can be {@link ShapeSTRING} or {@link ShapeNUMBER}; pattern may contain {@link java.text.SimpleDateFormat}-compatible pattern definition. <li> <li>Can be used on Classes (types) as well, for modified default behavior, possibly overridden by per-property annotation <li> <li>{@link java.lang.Enum}s: Shapes {@link ShapeSTRING} and {@link ShapeNUMBER} can be used to change between numeric (index) and textual (name or <code>toString()<code>); but it is also possible to use {@link ShapeOBJECT} to serialize (but not deserialize) {@link java.lang.Enum}s as JSON Objects (as if they were POJOs). NOTE: serialization as JSON Object only works with class annotation; will not work as per-property annotation. <li> <li>{@link java.util.Collection}s can be serialized as (and deserialized from) JSON Objects, if {@link ShapeOBJECT} is used. NOTE: can ONLY be used as class annotation; will not work as per-property annotation. <li> <li>{@link java.lang.Number} subclasses can be serialized as full objects if {@link ShapeOBJECT} is used. Otherwise the default behavior of serializing to a scalar number value will be preferred. NOTE: can ONLY be used as class annotation; will not work as per-property annotation. <li> <ul>机器翻译:通用注释,用于配置如何序列化属性值的详细信息。与大多数其他 Jackson 注释不同,注释没有特定的通用解释:相反,效果取决于被注释的属性的数据类型(或者更具体地说,使用的反序列化器和序列化器)。<p> 常见用途包括在替代表示形式之间进行选择——例如,{@link java.util.Date} 是序列化为数字(Java 时间戳)还是字符串(例如 ISO-8601 兼容的时间值)——以及使用 {@link pattern} 属性配置确切的详细信息。<p>Jackson 2.6 开始,已知的特殊处理包括: <ul> <li>{@link java.util.Date}:形状可以是 {@link ShapeSTRING}{@link ShapeNUMBER};pattern 可能包含 {@link java.text.SimpleDateFormat} 兼容的模式定义。<li> <li>也可以用于类(类型),用于修改默认行为,可能被每个属性的注释 <li> <li>{@link java.lang.Enum} 覆盖:形状 {@link ShapeSTRING}{@link ShapeNUMBER} 可用于在数字(索引)和文本(name 或 <code>toString())之间切换<code>;但也可以使用 {@link ShapeOBJECT}{@link java.lang.Enum} 序列化(但不能反序列化)为 JSON 对象(就像它们是 POJO 一样)。注意:序列化为 JSON Object 仅适用于类注释;将不用作每个属性的注释。<li> <li>如果使用 {@link ShapeOBJECT},则 {@link java.util.Collection} 可以序列化为 JSON 对象(并从中反序列化)。注意:只能用作类注释;将不用作每个属性的注释。<li> <li>如果使用 {@link ShapeOBJECT},则可以将 {@link java.lang.Number} 子类序列化为完整对象。否则,将首选序列化为标量数值的默认行为。注意:只能用作类注释;将不用作每个属性的注释。<li> <ul>

补充几个 @JsonFormat 的使用方式。

//实体类
@Data
@Accessors(chain = true)
public class TestJsonFormat {@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT)private Integer sendDate;@JsonFormat(shape = JsonFormat.Shape.STRING)private String str;@JsonFormat(shape = JsonFormat.Shape.NUMBER)private Date dateNum;@JsonFormat(pattern = "yyyy-MM-dd")private Date getDate;
}
//接口定义@GetMapping("/testJsonFormat")public AjaxResult testJsonFormat(@RequestBody TestJsonFormat format) {format.setDateNum(new Date());return AjaxResult.success(format);}
//接口调用入参:
{"sendDate": 12.3,"str": 333,"receiveDate":"2023-10-21"
}
//打印结果:
TestJsonFormat(sendDate=12, str=333, dateNum=null, receiveDate=Sat Oct 21 00:00:00 CST 2023)
//返回参数:
{"msg": "操作成功","code": 200,"data": {"sendDate": 12,"str": "333","dateNum": 1734569603473,"receiveDate": "2023-10-21"}
}
可以看到:
1@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT):将接收数据转换成了整形
2@JsonFormat(shape = JsonFormat.Shape.STRING):将接收数据转换成了字符串类型
3@JsonFormat(shape = JsonFormat.Shape.NUMBER):将返回的数据转换成了数字类型时间戳
4@JsonFormat(pattern = "yyyy-MM-dd"):将字符串类型的时间转换成了对象,又以指定格式返回字符串

http://www.mrgr.cn/news/80655.html

相关文章:

  • go 跨平台打包
  • 解锁 draw.io 流程图制作工具的强大功能与应用(1/2)
  • RabbitMQ如何构建集群?
  • 23.DDD与微服务
  • OpenCV目标检测 级联分类器 C++实现
  • 实现聚水潭到小满OKKICRM的高效数据集成
  • 高并发 - 2.线程池
  • 大模型系列4--开源大模型本地部署到微调(WIP)
  • ubuntu系统版本安装docker容器
  • Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
  • windows11 24H2 CSOL 闪退问题解决办法
  • Java通过反射破坏单例模式
  • Compose IO
  • Linux介绍与安装CentOS 7操作系统
  • JS实现简单的前端分页功能
  • Avalonia 开发环境准备
  • asp.net core发布配置端口号,支持linux
  • 使用qemu搭建armv7嵌入式开发环境
  • matlab绘图时设置左、右坐标轴为不同颜色
  • JVM性能优化一:初识内存泄露-内存溢出-垃圾回收
  • Linux Shell 脚本编程基础知识篇
  • 【蓝桥杯】46195.水仙花数
  • ARM学习(38)多进程多线程之间的通信方式
  • Visual Studio 2022 QT5.14.2 新建项目无法打开QT的ui文件,出现闪退情况
  • [spring]XML标签<bean>的二级标签
  • WPF ControlTemplate 控件模板