SSM框架前后台⽇期处理问题
在次之前我先声明⼀下我在这⾥遇到的⼀个⼤坑:就是时区的问题,所有条件,都能在控制台看出来,前后台也不报错的情况下,那么就证明你的代码没有问题,问题出在时区的那块!
我的这次时区问题,是因为数据版本导致的,5点⼏的⼀般不会出现,就是因为版本原因导致的时区不同,我的环境是mysql8.0+连接器8.0,之前设置的是UTC时区,改完后设置成Asia/Shanghai就完美解决!
这块我整理⼀下关于时间的⼀些配置:
我的dao、mapper、vo是通过mybatis逆向⼯程⽣成的,标红的是针对⽣成query⽂件⾥的函数说的
ssm框架主要代码在哪里⼀、jsp页⾯对于⽇期格式的显⽰和传值
<input name="orderdate" type="date" value="<fmt:formatDate value="${orderdate}" pattern="yyyy-MM-dd" type="date"/>"/>
⼆、运⾏框架后出现⽇期不能为空的错误
在controller⾥⾯加上这⼀条,表⽰在当前类⾥不会出现问题
@InitBinder
public void init(WebDataBinder binder) {
}
但是这⾥注意,⽇期类型的数据没有模糊查询,所以参数传进andOrderflagEqualTo()⾥必须不能是null值,所以⽤次函数之前需要判断⼀下后台传过来的⽇期是否为空
Orderdate()!=null){
criteria.Orderdate());
}
三、时间格式处理注解
@DateTimeFormat(pattern = "yyyy-MM-dd"):该注解放在实体类⾥的属性上⾯,
@@JsonFormat(pattern = "yyyy-MM-dd",timezone = "UTC"):该注解加在实体类中的⽇期类型上,可以将返回的Json字符串中的时间戳转换为具体时间
使⽤原因:
从数据库获取时间传到前端进⾏展⽰的时候,我们有时候可能⽆法得到⼀个满意的时间格式的时间⽇期,在数据库中显⽰的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使⽤@JsonFormat可以很好的解决:后台到前台时间格式保持⼀致的问题,其次,另⼀个问题是,我们在使⽤WEB服务的时,可能会需要⽤到,传⼊时间给后台,⽐如注册新⽤户需要填⼊出⽣⽇期等,这个时候前台传递给后台的时间格式同样是不⼀致的,⽽我们的与之对应的便有了另⼀个注
解,@DataTimeFormat便很好的解决了这个问题,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论