spring mvc 用注解和在sql中式化时间的案例:
我们用spring mvc框架做项目的时候从数据库里面取出的时间经常是一串数字(如:1357826031724),比较让人头痛;
下面介绍中方法解决这个问题:
1、如果用sql方法可以在取时间一列中用to_char()方法(如:select id as "id",to_char(create_time,'YYYY-MM-dd') as createtime from table)。
2、也可以用注解的方式格式化时间如例:
写几个公用的类以便常用
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author zkz
* @date 2012-04-27
*/
public class CustomDateSerializerHM extends JsonSerializer<Date> {
@Override
public void serialize(Date arg0, JsonGenerator arg1,
SerializerProvider arg2) throws IOException,
JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这里可以换成你想要的时间格式
String formattedDate = formatter.format(arg0);
arg1.writeString(formattedDate);
}
}
public class CustomTimeDeserializer extends JsonDeserializer<Date>{
@Override
public Date deserialize(JsonParser arg0, DeserializationContext arg1)
throws IOException, JsonProcessingException
{
Date date = new Date();
if (null != arg0)
{
date = DateUtil.parse(arg0.getText(),DateUtil.Format_DateTime);
}
return date;
}
}
public class CustomTimeSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date arg0, JsonGenerator arg1,
SerializerProvider arg2) throws IOException,
JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat(DateUtil.Format_DateTime);
String formattedDate = formatter.format(arg0);
arg1.writeString(formattedDate);
}
}
然后在你实体类中时间属性的
get方法上面加@JsonSerialize(using = CustomTimeSerializer.class)和
set方法上面加@JsonDeserialize(using = CustomTimeDeserializer.class)
如例:
@Column(name="create_time")
private Date createTime;
@JsonSerialize(using = CustomTimeSerializer.class)
public Date getCreateTime()
{
return createTime;
}
@JsonDeserialize(using = CustomTimeDeserializer.class)
public void setCreateTime(Date createTime)
{
this.createTime = createTime;
}