我有一个表客户和 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
- 最好只使用long
s操作。
因此,只需List<Long> ids
在您的控制器中作为参数传递(不要忘记将此参数注释为@RequestBody
或@RequestParam
取决于您想在何处指定这些 id - 在 url 中或在正文中),然后CrudRepository#findAll(ids)
从您的服务类中调用。
12345678_0001
TA贡献1802条经验 获得超5个赞
您不需要定义单独的输入和输出类,相反,您可以根据您的用例构建和返回 Map 或 List。同样对于输入,您可以接受 List ,其中包含您要检索的客户 ID 列表。
添加回答
举报
0/150
提交
取消