关于传入时间和后台数据库格式不对问题

前端的时间格式都是根据日期控件形成的,接着转换成字符串的格式发送给后台,但是后台数据库的时间格式基本都是Date类型,与字符串无法匹配,需要后台先进行转换再写入数据库,有些繁琐了,现下就有一个好的办法

@DateTimeFormat
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "CREATETIME")
private Date createtime;

这个注解是用来格式转换的,等价于 SimpleDateFormat这个转换类,省去了几行的代码,注解会自动的将存入的字符串类型转换成日期格式,只需要在实体类的字段属性上加上就可以

但是,这里有一个小bug,有的时候前端传入的格式是:yyyy-MM-dd,那这个注解就会失效了,找到了一个解决办法

/**
* 重载了Contriller方法,让前端传入的String类型时间格式对实体类的类型进行匹配
* @param binder 前端传入参数
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    dateFormat.setLenient(false);
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

将这个这个在Controller中重载下来,将格式提前转换,这样注解就会有用了

另外有一点,在前端通过接口获取时间数据的时候,通常数据库会返回一段时间戳给前端,还需要后台先进行转换了再发送给前端,现下有一个注解可以完美融合,省略后台转换代码,直接将时间戳进行格式化发送给前端


/**
* 获取创建时间
*
* @return CREATETIME - 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
public Date getCreatetime() {
    return createtime;
}
只需要在实体类的get方法上加上注解即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值