这段时间,我在网上看见,数据访问框架除了hibernate,还有不少的公司使用mybatis,边在网上下了mybatis,自己做一个springmvc+mybatis整合的小Demo,发现使用springmvc来处理时间好纠结,花了一天的时间,在网上找了大量的资料和看了官方的Demo,用了相对比较猥琐的办法,解决了问题!废话不多说,下面上菜:
首先,是显示问题,大家都知道springmvc会把数据库中查出来的Date时间,使用Jackson传到前台会转成毫秒数也就是一长串数字(如:“hiredate”:"142714380000000"),这个问题,我在网上看了很多前辈的解决办法,我都试过,但是很遗憾,都不适合我!没办法,只能想,在js中用个方法吧毫秒数转成正常的时间显示,如下
$.each(data,function(i,emp){ str+="<tbody align='center'><tr>"; str+="<td>"+emp.empno+"</td>"; str+="<td>"+emp.ename+"</td>"; str+="<td>"+emp.job+"</td>"; <strong><span style="color:#ff0000;">var newdate=jsondate(emp.hiredate); str+="<td>"+newdate+"</td>";</span></strong> });
就是这两行,其中jsondate(emp.hiredate)是个function方法,如下:
function jsondate(date){ var datetime = new Date(date); var year=datetime.getFullYear(); //月份重0开始,所以要加1,当小于10月时,为了显示2位的月份,所以补0 var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1; var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate(); var hour = datetime.getHours()< 10 ? "0" + datetime.getHours() : datetime.getHours(); var minute = datetime.getMinutes()< 10 ? "0" + datetime.getMinutes() : datetime.getMinutes(); var second = datetime.getSeconds()< 10 ? "0" + datetime.getSeconds() : datetime.getSeconds(); return year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second; }OK,上面的时间显示问题,算是解决了
接下来就是添加时的问题了,相信大家,如果第一次使用springmvc添加时间都会报错:
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
这种情况就是springmvc识别不了你输入的时间,导致转换不了,所以报错,别怕,解决的方法如下:
首先,需要下载一个joda-time-2.1.jar包,
然后在实体domain的时间类型属性上配置
@DateTimeFormat(pattern="yyyy-MM-dd") private Date hiredate;OK,现在保存项目,再去运行,问题解决!