在SpringMVC和Mybatis中使用LocalDataTime

需要在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 ) {
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容