spring GET方法:如何将snake_case查询字符串转换为camelCase DTO

idfiyjo8  于 2022-11-28  发布在  Spring
关注(0)|答案(1)|浏览(162)

我使用了snake_case DB列和camelCase DTO。我们的团队希望在编写React组件时使用snake_case。
因为这个原因,我在DTO上加了@JsonNaming,但是在我发送Json数据的时候,它是可以工作的,大家知道,有没有类似@JsonNaming的注解或者设置?
这是我的 Postman 数据和示例代码。
调试数据:样本名称=名称,样本描述=空。x1c 0d1x
//控制器

@RestController
@RequestMapping("/sample")
public class SampleController {

    @Autowired
    private SampleService sampleService;

    @GetMapping
    public Result getSampleList(SampleDTO param) throws Exception {
        return sampleService.getFolderList(param);
    }

    @PostMapping
    public Result insertSample(@RequestBody SampleDTO param) throws Exception {
        // this method works well with @JsonNaming
        return sampleService.insertFolder(param);
    }
}

//数据类型

@Setter
@Getter
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@Alias("SampleDTO")
public class SampleDTO {

    @NotNull
    private Long sampleNo;

    @NotBlank
    private String sampleName;

    private String sampleDesc;

    @Builder
    public SampleDTO(Long sampleNo, String sampleName, String sampleDesc) {
        this.sampleNo = sampleNo;
        this.sampleName = sampleName;
        this.sampleDesc = sampleDesc;
    }

}
n3ipq98p

n3ipq98p1#

我遇到了同样的问题,没有找到相应的注解,但也许您可以在DTO的构造函数中使用@ConstructorProperties,如下所示:

@ConstructorProperties({"sample_no","sample_name","sample_desc"})
public SampleDTO(Long sampleNo, String sampleName, String sampleDesc) {
    this.sampleNo = sampleNo;
    this.sampleName = sampleName;
    this.sampleDesc = sampleDesc;
}

相关问题