这些只是开发的规范,规范就是建议遵守的,大家都这样做,长期以来就形成了一种开发规范,便于我们开发。
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笔者了解的并不是特别多,如果后续有深入了解,会回来更新这篇博客
感谢你的观看!!💕💕文章来源:https://www.toymoban.com/news/detail-427821.html
如果看完文章后你有所收获,且非常有条件的话,请给我点个赞吧,谢谢!文章来源地址https://www.toymoban.com/news/detail-427821.html
到了这里,关于简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!