简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌

这些只是开发的规范,规范就是建议遵守的,大家都这样做,长期以来就形成了一种开发规范,便于我们开发。
DO、BO、DTO、VO、AO他们都是普通的Java类,只不过通常我们把他们放在DO、BO、DTO、VO、AO名的包下,结尾以DO、BO、DTO、VO、AO命名放在这些包下的类。

有时DO也会放在名为PO(Persistent Object)的包下

DO

DO(Data Object)
先介绍最简单的DO,一个DO你就可以理解为一张Mysql里的表,不过这个表是实体的一个Java类,一个DO的对象就表示mysql里的一条数据。

准确的说,DO也并不是对应于Mysql的一张表,可以表示应用程序中任何一个具有实体属性的对象。一般来说DO应该包含业务属性和持久化属性两个方面,既保证了业务对象的正确性和完整性,又保证了数据的可持久化和可恢复性。

下面是一个DO的例子。

package com.xut.yiban.user.entity.po.dormitory;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 宿舍类
 * @author kerwin
 * @create 2023-04-17 13:02
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dormitory {
    /**
     * 宿舍号 复合主键1
     */
    @TableId(type = IdType.NONE)
    private String dorm_num;

    /**
     * 宿舍楼
     */
    private String dorm_building;

    /**
     * 学院id
     */
    private int college_id;

    /**
     * 校区id
     */
    private int campus_id;

}

DTO

DTO(Data Transfer Object)
DTO 简单理解就是接收前端传递过来的数据的,比如前端给你传递一个POST请求,你想用对象进行接收,此时我们就会使用DTO对象来接收。

下面是一个DTO的例子,我们用SaveCheckMissionDTO类来接收前端传递过来的POST请求的请求体对应参数

    /**
     * 功能模块:宿舍检查
     *
     * 用于存储一次检查任务的发布
     * @param saveCheckMissionDTO 一个封装的接收类
     * @return
     */
    @PostMapping("/set_and_publish_check")
    public HttpResult publish_check(@RequestBody SaveCheckMissionDTO saveCheckMissionDTO){
        return dormitoryService.publish_check(saveCheckMissionDTO);
    }

SaveCheckMissionDTO类如下

/**
 * 用于接收的前端传递的参数的类
 * @author kerwin
 * @create 2023-04-18 0:09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SaveCheckMissionDTO {
    private Map<String,ArrayList<String>> checkRange;
    private String percent;
    private String startTime;
    private String endTime;
    private String excelInfo;
    private ArrayList<TeacherinfoDTO> teachers;
}

VO

VO(View Object)
VO简单来说,就是我们返回给前端数据用的对象就是VO,比如你从数据库查了一些表的部分信息,封装之后,要返回给前端,此时你就你可以用一个VO来进行封装,返回给前端。

在实际项目中也可能存在根据具体接口和需求创建独立AO类的情况。

举例如下

    @Override
    public HttpResult judge_previous_status() {
        PreviousInfoVO previousInfoVO = dormitoryMapper.judge_previous_status();
        return previousInfoVO==null? HttpResult.success():HttpResult.success(previousInfoVO);
    }

一个VO类的例子

/**
 * 查询有没有正在进行的查寝任务,有的话把这个返回
 *
 * @author kerwin
 * @create 2023-04-26 19:48
 */
@Getter
@Setter
public class PreviousInfoVO {
    private String startTime;
    private String endTime;
}

BO

BO(Business Object)
BO作为服务层的对象,举个例子,针对一个在线商店,商店中的商品、订单和用户等都属于业务对象。以商品为例,商品有价格,商品描述等属性,还有一些添加商品、删除商品的方法,那么用于描述商品的一个类,我们就可以归类为BO。

public class ProductBO {
    private String productId;
    private String productName;
    private BigDecimal price;
    private String description;
    // getter and setter methods
    
    public void addProduct(ProductDO product) {
        // 根据业务逻辑处理商品添加操作
    }
    
    public void updateProduct(ProductDO product) {
        // 根据业务逻辑处理商品更新操作
    }
    
    public void deleteProduct(String productId) {
        // 根据业务逻辑处理商品删除操作
    }
    
    public List<ProductVO> queryProductList() {
        // 根据业务逻辑查询商品列表,并将结果转换为VO返回
    }
}

AO

AO(Action Object)
以上面的商品BO为例,一个商品BO周边应该还会有一些行为,比如获取商品列表,根据关键字搜索商品,添加商品到购物车等等的行为,这每一个行为,其实都可以作为一个AO类来创建。

而实际上AO有时还会被理解成为Application Object,对于AO笔者了解的并不是特别多,如果后续有深入了解,会回来更新这篇博客

感谢你的观看!!💕💕

如果看完文章后你有所收获,且非常有条件的话,请给我点个赞吧,谢谢!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值