包命名規範說明(DO、DTO、VO、QueryParam)
阿新 • • 發佈:2020-12-18
技術標籤:java
DO(Data Object): —包命名為do
簡單一點理解就是裡面的欄位一一與資料庫表字段對應,需與資料庫打交道的就使用DO物件
栗子:
需要進行商品的更新操作,這裡可以看到對資料庫進行打交道的時候,是將傳遞過來的DTO物件轉化為了DO物件,然後才進行更新操作的
public Integer updateProduct(ProductDTO productDTO) {
ProductDO productDO = new ProductDO();
BeanUtils.copyProperties(productDTO, productDO);
return productMapper.updateById(productDO);
}
DTO(Data Transfer Object): —包命名為dto
簡單一點理解就是在資料傳輸的時候用到的
栗子:
更id對商品進行查詢,這裡可以看到資料庫中查詢出來返回的結果是DO物件,要將資料進行傳遞就轉化為DTO物件
public ProductDTO selectById(Long id) {
ProductDO productDO = productMapper.selectProductById(id);
if (ObjectUtils.isEmpty(productDO) ) {
return null;
}
ProductDTO productDTO = new ProductDTO();
BeanUtils.copyProperties(productDO, productDTO);
return productDTO;
}
VO(View Object) —包命名為vo
簡單一點理解就是用於給頁面顯示使用的
栗子:
根據id進行商品查詢,這裡可以看到通過將DTO物件轉化為VO物件,返給前端的是VO物件
@GetMapping("/pid/{pid}" )
@ApiOperation("根據商品id查詢商品")
@Log("查詢商品")
ApiResult<ProductVO> selectById(@PathVariable("pid") Long pid) {
ProductDTO productDTO = productService.selectById(pid);
ProductVO productVO=new ProductVO()
BeanUtils.copyProperties(productDTO, productVO);
return ApiResult.ok(productVO);
}
QueryParam —包命名為param
簡單一點理解就是對請求引數使用的,時候也可以使用DTO作為請求引數(可能每個公司要求的不一樣)
栗子:
根據商品一些不同的屬性進行分頁展示,這裡可以看到接收請求的引數使用的是QueryParam作為請求引數(可以看到這裡網前端反的物件是有問題的,應該反會的是VO物件,這裡我就不行調整了,要注意深拷貝淺拷貝問題,可能有些公司不是那麼規範,甚至不使用VO,直接給前端反DTO)
@PostMapping("/products")
@ApiOperation("商品分頁列表")
ApiResult<Paging<ProductDTO>> pageData(@Valid @RequestBody ProductQueryParam query) {
Paging<ProductDTO> productPageInfo = productService.selectPage(query);
return ApiResult.ok(productPageInfo);
}
提升
這裡只是簡單介紹了怎麼用,至於為什麼這麼命名
可以參考一下這篇blog:https://www.cnblogs.com/suizhikuo/p/8409153.html