spring boot从1.5版本升级到2.7版本遇到的问题
1、jackson
jackson包路径发生替换
从 org.codehaus.jackson->com.fasterxml.jackson
对于LocalDateTime的序列化:
添加依赖:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
JavaTimeModule javaTimeModule = new JavaTimeModule();
SimpleModule simpleModule = new SimpleModule();
//LocalDateTIme转时间戳
simpleModule.addSerializer(LocalDateTime.class, new JsonSerializer<LocalDateTime>() {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException {
long epochMilli = value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
gen.writeNumber(epochMilli);
}
});
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
ObjectMapper mapper = ((MappingJackson2HttpMessageConverter) converter).getObjectMapper();
mapper.registerModule(javaTimeModule);
mapper.registerModule(simpleModule);
}
}
2、mybatis的dateTime映射问题
当resultType="map"时,dataTime类型的字段会映射为LocalDateTime,需要配置以下TypeHandler:
configuration.getTypeHandlerRegistry().register(Object.class, JdbcType.TIMESTAMP, new DateTypeHandler());

浙公网安备 33010602011771号