为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 使用 Hibernate 使用 Json 并返回值

Spring 使用 Hibernate 使用 Json 并返回值

慕丝7291255 2021-10-28 14:08:54
我有一个表客户和 2 列 customer_id 和 customer_name。我想用json发送id列表请求并返回相应的客户名称。但我无法处理 dto 对象和控制器服务架构。输入dto:public class CustomerSearchDto extends BaseDto {    @ApiModelProperty(            example = "1",            value = "Customer Id",            required = true,            dataType = "Long"    )    private Long id;}输出到:public class CustomerDto extends BaseDto {    private Long id;    private String name;    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}控制器类:@ApiOperation(            value = "Return Customer",            response = Customer.class    )    @PostMapping(value = Endpoint.RRESOURCE_CUSTOMER_GROUP_BY_ID)    public ResponseEntity<CustomerDto> getCustomersById(@RequestBody @Validated CustomerSearchDto CustomerSearchDto) {        CustomerDto CustomerDto = new CustomerDto;        List<CustomerDto> CustomerDtoList = CustomerService.findCustomerByIds(ids);        return ResponseEntity.ok(CustomerDto);    }服务类方法:@Transactional    public List<CustomerDto> findCustomerByIds(List<Long> customerIds) {        List<Customer> customerList = repository.findCustomerById(CustomerIds);        return mapper.mapAsList(CustomerList, CustomerDto.class);    }控制器类中有一些错误。而且我不确定我是否应该为输入和输出定义不同的 dto 类?
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

首先,您似乎应该使用CrudRepository#findAll(java.lang.Iterable<ID>)多个 ID 来搜索您的实体。

同样在您的特定情况下,创建一个单独的CustomerSearchDto作为持有者是多余的id- 最好只使用longs操作。

因此,只需List<Long> ids在您的控制器中作为参数传递(不要忘记将此参数注释为@RequestBody@RequestParam取决于您想在何处指定这些 id - 在 url 中或在正文中),然后CrudRepository#findAll(ids)从您的服务类中调用。


查看完整回答
反对 回复 2021-10-28
?
12345678_0001

TA贡献1802条经验 获得超5个赞

您不需要定义单独的输入和输出类,相反,您可以根据您的用例构建和返回 Map 或 List。同样对于输入,您可以接受 List ,其中包含您要检索的客户 ID 列表。


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信