1.数据库层处理:date_format函数
2.逻辑层处理
2.1 @JsonSerialize使用
2.1.1 返回日期数据类型为string
2.1.2 返回日期数据类型为date
2.2@JsonFormat使用
mybatis中对于日期处理可能会出现.0的情况,下面对此类问题处理方案进行汇总说明.
1.数据库处理:date_format
sql中进行格式化处理:date_format(create_time, ‘%Y-%m-%d %H:%i:%s’);
<select id="findNews" resultType="com.it.txm.demo.News">
select id,title,date_format(create_time, ‘%Y-%m-%d %H:%i:%s’) from find_news
</select>
2.逻辑层处理
2.1 @JsonSerialize使用
2.1.1返回前端日期类型为String
自定义jsonSerializer并将日期转化为符合格式的字符串
public class Date2StringJsonSerializer extends JsonSerializer<String> {
// 字段类型为string时处理方式
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString(value.substring(0,16));
}
}
实体类中时间字段添加@JsonSerialize并指定自定json序列化器
public class News {
private String id;
private String title;
@JsonSerialize(using = Date2StringJsonSerializer.class)
private String createTime;
}
2.1.2返回前端日期类型为date
自定义jsonSerializer并将日期转化为符合格式的日期
public class Date2DateJsonSerializer extends JsonSerializer<Date> {
private SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
// 字段类型为date时的处理方式
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
String format = simpleDateFormat.format(value);
gen.writeString(format);
}
}
实体类中时间字段添加@JsonSerialize并指定自定json序列化器.
public class News {
private String id;
private String title;
@JsonSerialize(using = Date2DateJsonSerializer .class)
private Date createTime;
}
2.2@JsonFormat使用
public class News {
private String id;
private String title;
@JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm",timezone="GMT+8")
private Date createTime;
// 省略get/set
}
@JsonFormat作用是将数据库日期字段信息按照时间格式转化为date类型.timezone=“GMT+8”,我们是在东八区,@JsonFormat当地时间差8小时.
如果有其他的处理方式,欢迎小伙伴评论区留言!