定义的DTO里面有Date字段
Private Date beginDate;
- 入参传入
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date beginDate;
Json字符串直接传入是传入不了的,要通过DateTimeFormat来约定传入的格式。这里就约定成传入的格式要为 2021-05-07 15:07:33。如果不按这个格式传入会出错。
- 出参格式化
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date beginDate;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endDate;
这样设置后,接口返回日期也会按照这个规范来返回了。
XML中按时间段查询
如果是时间段的话会再设置一个endDate也和这个一样处理即可。
这么处理之后在xml里就很简单了,只用做如下操作
<if test="beginDate != null and endDate != null">
AND createtime BETWEEN #{beginDate} AND #{endDate}
</if>
但是现实使用中我还是用到了另外一种办法
没有加@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss"),按道理说不加这个传值传不进来,但是在我在swagger接口里传入2021-05-01 00:00:00格式的值,却成功了。
然后我的XML是这样写的
<if test="beginDate != null and endDate != null">
AND createtime BETWEEN DATE_FORMAT(#{beginDate},'%Y-%m-%d 00:00:00')
AND DATE_FORMAT(#{endDate},'%Y-%m-%d 23:59:59')
</if>
(11条消息) @JsonFormat与@DateTimeFormat注解的使用_HeJD的博客-CSDN博客_datetimeformat注解使用