java - Spring Boot将请求参数字段的日期格式更改为DTO

标签 java spring-boot datetime dto localdate

我的 Controller 有一个 GET 端点,它接受大量查询参数。因此,我没有创建多个 @QueryParam,而是创建了一个 CriteriaDTO 来对 Mongo 数据库执行动态查询

我的 Controller 端点:

@GetMapping
public List<MyObject> getAll(@Valid CriteriaDTO criteriaDTO){
    return myObjectService.findAll(criteriaDTO);
} 

public class CriteriaDTO {

    private int offset = 0
    private int limit = 20
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate minDate

    // getters, setters ...
}

而且,我想传递 minDate 是具有以下格式 yyyy-MM-dd 的 URL,但我需要将其转换为以下格式 yyyy-MM-dd'T 'HH:mm:ss.SSS.

我的问题是:是否有任何注释或其他内容可以接受第一种格式 yyyy-MM-dd 并自动将其转换为另一种格式?

需要明确的是,如果我调用以下电话:

http://localhost:8080/api/myobject?minDate=2020-01-01

然后 criteriaDTO.getminDate() 将返回 2020-01-01'T'00:00:00.000

感谢您的帮助:)

最佳答案

您可以通过比搜索注释魔术解决方案更简单的方式来完成此操作。

只需向 CriteriaDTO 添加一个用于 LocalDateTime 的附加 getter:

public LocalDateTime getMinDateTime() {
    return this.minDate.atTime(0, 0, 0, 0);
}

并在需要时间而不是日期的任何地方使用它。

关于java - Spring Boot将请求参数字段的日期格式更改为DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60060427/

相关文章:

java - Spring Java 应用程序找不到 keystore 文件

java - 在将对象从 Java 传递到 Jython 时保留对象的 Java 类型

java - 从方法名称创建查询不起作用。尝试过滤可分页

java - 在 Hibernate 中处理环境特定字段的最佳方法

c# - Linq 选择当月日期​​所在的行

java - 我的代码在 asyncTask 中不起作用

spring-boot - 我可以在 Godaddy 上部署 Spring Boot 应用程序吗

PHP MYSQL 更新多个字段包括 DATETIME 字段

php - 从 php 中的 mysql 查询中获取日期

java - 创建包含不同对象的列表