Springboot2 jackson2のLocalDateTime LOCALDATE DateTimeの日付書式付き
理由:データベースは2つのデータフィールドを有することを特徴とする請求使用MyBatisのプラスのLocalDateTimeのデフォルトの日付フォーマットとして生成された逆コードを生成するコードジェネレータは、LocalDateTimeをフィールド内の3つのエンティティがあり、日付フィールドは@JsonFormat(パターン=使用して初期化しません"YYYY-MM-DD HH:MM:SS":MM:SS、タイムゾーンは= "GMT + 08")フィールドデータの日付形式はYYYY-MM-DDTHHなって初期化されません
輸入com.fasterxml.jackson.core.JsonGenerator。
輸入com.fasterxml.jackson.core.JsonParser。
輸入com.fasterxml.jackson.databind *。;
輸入com.fasterxml.jackson.datatype.jsr310.JavaTimeModule。
輸入org.apache.commons.lang3.StringUtils。
輸入org.springframework.context.annotation.Bean。
輸入org.springframework.context.annotation.Configuration。
輸入org.springframework.context.annotation.Primary;
輸入org.springframework.core.convert.converter.Converter。
輸入org.springframework.lang.NonNull;
インポートにjava.io.IOException;
輸入java.time.LocalDate。
輸入java.time.LocalDateTime。
輸入java.time.LocalTime。
輸入java.time.format.DateTimeFormatter。
java.util.TimeZoneのインポート;
/ **
* Jackson2日のシリアライズとデシリアライズプロセス
*
* @Author zhaoyang10
* @Create 2018年11月27日
* /
@Configuration
パブリッククラスDateConverterConfig {
プライベート静的最終てDateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern( "YYYY-MM-DD HH:MM:SS")。
プライベート静的最終てDateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern( "YYYY-MM-DD")。
プライベート静的最終てDateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern( "HH:MM:SS")。
/ **
空の文字列の出力順序の* Jackson2 JSONヌルフィールド
*
* @return
* @Author zhaoyang10
* /
@豆
@Primary
//@ConditionalOnMissingBean(ObjectMapper.class)
公共ObjectMapper serializingObjectMapper(){
ObjectMapper objectMapper =新しいObjectMapper();
JavaTimeModule javaTimeModule =新しいJavaTimeModule();
//シリアライズされた日付フォーマット
javaTimeModule.addSerializer(LocalDateTime.class、新しいLocalDateTimeSerializer());
javaTimeModule.addSerializer(LocalDate.class、新しいLocalDateSerializer());
javaTimeModule.addSerializer(LocalTime.class、新しいLocalTimeSerializer());
//デシリアライズの日付形式
javaTimeModule.addDeserializer(LocalDateTime.class、新しいLocalDateTimeDeserializer());
javaTimeModule.addDeserializer(LocalDate.class、新しいLocalDateDeserializer());
javaTimeModule.addDeserializer(LocalTime.class、新しいLocalTimeDeserializer());
objectMapper.registerModule(javaTimeModule)。
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)。
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)。
objectMapper.setTimeZone(はTimeZone.getTimeZone( "アジア/上海"));
objectMapperを返します。
}
/ **
*日付のシリアル化
* /
パブリッククラスLocalDateTimeSerializerはJsonSerializerを拡張<LocalDateTimeを> {
@オーバーライド
公共ボイドシリアライズ(LocalDateTimeを値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー
gen.writeString(value.format(DATETIME_FORMATTER))。
}
}
/ **
*日付の非直列化されました
* /
パブリッククラスLocalDateTimeDeserializerはJsonDeserializerを拡張<LocalDateTimeを> {
@オーバーライド
公共のLocalDateTimeのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー
LocalDateTime.parse(p.getValueAsString()、DATETIME_FORMATTER)を返します。
}
}
/ **
*日付のシリアル化
* /
パブリッククラスLocalDateSerializerはJsonSerializerを拡張<LOCALDATE> {
@オーバーライド
公共ボイドシリアライズ(LOCALDATE値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー
gen.writeString(value.format(DATE_FORMATTER))。
}
}
/ **
*日付の非直列化されました
* /
パブリッククラスLocalDateDeserializerはJsonDeserializerを拡張<LOCALDATE> {
@オーバーライド
公共LOCALDATEのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー
LocalDate.parse(p.getValueAsString()、DATE_FORMATTER)を返します。
}
}
/ **
*日付のシリアル化
* /
パブリッククラスLocalTimeSerializerはJsonSerializerを拡張<にLocalTime> {
@オーバーライド
公共ボイドシリアライズ(にLocalTime値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー
gen.writeString(value.format(TIME_FORMATTER))。
}
}
/ **
*日付の非直列化されました
* /
パブリッククラスLocalTimeDeserializerはJsonDeserializerを拡張<にLocalTime> {
@オーバーライド
公的にLocalTimeのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー
LocalTime.parse(p.getValueAsString()、TIME_FORMATTER)を返します。
}
}
/ **
*変換プロセスパラメータ日のフロントエンドを受けます
*
* @return
* /
@豆
公共コンバータ<文字列のLocalDateTime> LocalDateTimeConvert(){
返す新しいコンバータ<文字列、のLocalDateTime>(){
@オーバーライド
公共のLocalDateTimeコンバート(@NonNull文字列のソース){
LocalDateTime日= NULL;
IF(StringUtils.isNotBlank(ソース)){
日付= LocalDateTime.parse(ソース、DATETIME_FORMATTER)。
}
日付を返します。
}
}。
}
@豆
公共コンバータ<文字列、LOCALDATE> LocalDateConvert(){
{)(<文字列、LOCALDATE>新しいコンバータを返します
@オーバーライド
公共LOCALDATEコンバート(@NonNull文字列のソース){
LOCALDATE日= NULL;
IF(StringUtils.isNotBlank(ソース)){
日付= LocalDate.parse(ソース、DATE_FORMATTER)。
}
日付を返します。
}
}。
}
@豆
公共コンバータ<文字列にLocalTime> LocalTimeConvert(){
返す新しいコンバータ<文字列、にLocalTime>(){
@オーバーライド
公的にLocalTimeコンバート(@NonNull文字列のソース){
LocalTime時間= NULL;
IF(StringUtils.isNotBlank(ソース)){
時間= LocalTime.parse(ソース、TIME_FORMATTER)。
}
時間を返します。
}
}。
}
}