我有一個表客戶和 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
提交
取消