前言
使用mybatis难免会碰到返回时间类的问题。这里简单记录下学习总结。
现状
如果什么都不做,那么返回的类型
这个样式肯定不算我们想要的结果,但是先细想一下怎么处理,不至于在前端一堆js,后端遍历list去完成吧,肯定有解决的好办法吧。
解决
对于pojo对象
直接在pojo对象中加入过滤即可
import com.fasterxml.jackson.annotation.JsonFormat; --- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createtime;
以来jackson包,但现在基本都支持这个包,你也可以使用fastjson来处理。这样返回的数据就能满足要求
对于自定义map
可能有很多场景是通过自定义的map返回,比如一些关联查询,可能没有作多级联合,在sql中使用的简单的关联查询,对于这种情况,返回的类型和pojo类无关,需要我们在sql语句中进行处理。
@Select("select e.name,d.* from(SELECT a.`no`,a.classID,a.studentno,b.ID scoreid,b.score," "DATE_FORMAT(b.time,'%Y-%m-%d %h:%m:%s') as time,b.note " "from studentclass a " "LEFT JOIN score b " "on a.studentno=b.studentno " "and b.jobID=#{jobid} " "where a.classID =(SELECT teachclassid FROM job WHERE ID=#{jobid}) " "ORDER BY a.`no` asc)d,student e " "WHERE d.studentno=e.studentno") List getscorebyjobid(int jobid);
就是格式化日期的代码。同理,如果插入的代码string格式不对,你可以使用java的date类simpledateformat转换成date也可以直接根据格式转换,这里就不具体介绍。经过这样的转换,我们就能拿到想要的格式。
这样就能解决大部分的场景需求。如果日后遇到其他处理方式,会进行补充。如有错误,会进行更正!