关于如何解决从后台数据库取出的timestamp字段以YYYY-MM-DD HH:MM:SS展示在页面上

本来以为今天又是浪浪的一天,直到中午马上要吃饭时,老大说前台页面时间显示格式不正确,我只把年月日展示了,后面的时分秒却莫名其妙丢失了,解决了好长时间,终于,被同事攻克了这个问题,所以记下笔记,以供学习。

1.误区

    我一直以为后台定义的Date属性会自动把数据库中Timestamp类型的时分秒去掉,直到被同事在调试过程中用结果啪啪打脸,所以java.util.date中的date接收数据库中的Timestamp值时,是会全部接收的。而且,如果数据中字段类型是timestamp,如果不用Date类型接收,会报错:
    @Temporal should only be set on a java.util.Date or java.util.Calendar property:
    遇见这个错,我也是一顿百度,最后才知道,timestamp类型的字段真的不能用String,timestamp等其他类型的去接收。当时整的我都跟老大说把数据库里相关字段的类型改了吧,改成String,然后同事就跟我说找到解决办法了,就是@JSONField(format = "yyyy-MM-dd HH:mm:ss") 这个加到get方法上面就可以解决了。

2. @JSONField注解的使用

	这是FastJson中的注释,主要使用在set/get方法上,常见的使用场景有三个:

1> 修改字段映射使用方法

	private Integer aid;

// 实体类序列化为json字符串的时候,此类的aid字段,序列化为json中的testid字段

@JSONField(name="testid") 
  public Integer getAid() {
      return aid;
  }

// json字符串解析为类实体的时候,json中的id字段,写入此类的aid字段

@JSONField(name="id")
  public void setAid(Integer aid) {
      this.aid = aid;
  }

2> 格式化使用方法

@JSONField(format = "yyyy-MM-dd HH:mm:ss")
public Date getDateCompleted(...)

3> 过滤不需要序列化的字段

@JSONField(serialize = false)
  public Integer getProgress() {
      return progress;
  }
  

转发自https://www.cnblogs.com/yucy/p/9057049.html
关于JSONField

你可能感兴趣的:(JSONField)