1. 程式人生 > 其它 >包命名規範說明(DO、DTO、VO、QueryParam)

包命名規範說明(DO、DTO、VO、QueryParam)

技術標籤: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