前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 8日期类型在Springboot Controller,Mybatis中的一些处理

Java 8日期类型在Springboot Controller,Mybatis中的一些处理

作者头像
算法之名
发布2019-09-16 10:22:09
1.5K0
发布2019-09-16 10:22:09
举报
文章被收录于专栏:算法之名算法之名

首先Java 8的日期类型LocalDate,LocalDateTime,LocalTime在Mybatis中并没有映射关系,为此mybatis推出了一个补丁。

代码语言:javascript
复制
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-typehandlers-jsr310</artifactId>
   <version>1.0.1</version>
</dependency>

在Controller的方法参数里,如果使用了

代码语言:javascript
复制
@RequestParam("date") LocalDate date

当我们传递参数时,会被当成字符串,抛出异常。需要添加一个Controller增强器

代码语言:javascript
复制
@ControllerAdvice
public class GlobalJava8DateHandler {

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Date.class,new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(DateUtils.parse(text,DateUtils.pattern4));
            }
        });
        binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            }
        });
        binder.registerCustomEditor(LocalDateTime.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            }
        });
        binder.registerCustomEditor(LocalTime.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss")));
            }
        });
    }
}

@InitBinder,用于request中自定义参数解析方式进行注册,从而达到自定义指定格式参数的目的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档