1. 程式人生 > 實用技巧 >spring處理資料庫中Date型別欄位轉換成時間戳問題

spring處理資料庫中Date型別欄位轉換成時間戳問題

有兩種方式可以解決日期轉換Json問題:

1、(不推薦)區域性修改,自定義註解進行將日期型別轉換為Date型別。

2、(強烈推薦)全域性修改,用MappingJackson2HttpMessageConverter配置在XML(SpringMVC)或者配置在Application.Java啟動類(Spring boot、Spring cloud)。

配置在Application.Java啟動類(Spring boot、Spring cloud):

@Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter 
= new MappingJackson2HttpMessageConverter(); //設定日期格式 ObjectMapper objectMapper = new ObjectMapper(); SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd"); objectMapper.setDateFormat(smt); mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
//設定中文編碼格式 List<MediaType> list = new ArrayList<MediaType>(); list.add(MediaType.APPLICATION_JSON_UTF8); mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list); return mappingJackson2HttpMessageConverter; }

配置在XML(SpringMVC):

<mvc:annotation-driven
> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="customObjectMapper"/> </bean> </mvc:message-converters> </mvc:annotation-driven>

自定義objectMapper:

public class CustomObjectMapper extends ObjectMapper {    
    
    public CustomObjectMapper() {    
        CustomSerializerFactory factory = new CustomSerializerFactory();    
        factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {    
            @Override    
            public void serialize(Date value, JsonGenerator jsonGenerator,    
                    SerializerProvider provider) throws IOException, JsonProcessingException {    
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
                jsonGenerator.writeString(sdf.format(value));    
            }    
        });    
        this.setSerializerFactory(factory);    
    }    
}

注意:如果想要單個bean的某個日期欄位顯示年月日時分秒的話,只需要在對應日期的get方法上新增@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")即可。

轉 :https://my.oschina.net/u/3672057/blog/1844715