需要在maven中添加依赖:
<!--LocalDateTime-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
添加配置文件
springboot或spring自定义jackson的MapperObject对象,spring也可以通过xml配置的方式加入jackson配置。
@Configuration
public class JacksonConfig {
@Bean(name = "mapperObject")
public ObjectMapper getObjectMapper() {
ObjectMapper om = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
om.registerModule(javaTimeModule);
return om;
}
}
SpringMVC使用@RequestBody、@ResponseBody、@RestController注解时,会使用自定义的MapperObject对象进行json到LocalDate、LocalTime、LocalDateTime对象转换。
Mybatis通过通过mybatis-typehandlers-jsr310来把LocalDate、LocalTime、LocalDateTime映射到数据库的date、timestamp、datetime等字段。
如果SpringMVC接受的不是json参数,则要使用@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)注解来转换LocalDateTime
@PostMapping("/test1")
public void test1(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime localDateTime ) {
}
@PostMapping("/test2")
public void test2(@RequestParam @DateTimeFormat(iso = "dd.MM.yyyy") LocalDate localDate ) {
}
网友评论