java里dto vo使用示例
时间: 2025-02-20 17:46:17 浏览: 36
### Java 中 DTO 和 VO 的使用示例
#### 定义类
为了更好地理解如何在项目中应用 `DTO` 和 `VO`,下面定义几个简单的实体类来模拟用户信息处理流程。
```java
// 数据库对象 (DO),映射到数据库中的 users 表
public class UserDO {
private Long id;
private String name;
private Integer age;
// Standard getters and setters...
}
// 数据传输对象 (DTO), 用于服务间的数据交换或作为 API 请求/响应的一部分
public class UserDTO {
private Long userId;
private String userName;
private int userAge;
// Standard constructors, getters and setters...
public static UserDTO fromDo(UserDO doObj) {
if (doObj == null) return null;
UserDTO dto = new UserDTO();
dto.setUserId(doObj.getId());
dto.setUserName(doObj.getName());
dto.setUserAge(doObj.getAge() != null ? doObj.getAge().intValue() : 0);
return dto;
}
}
```
```java
// 值对象 (VO),通常用来封装视图所需的信息,在这里表示要向客户端展示的内容
public class UserVO {
private final long id;
private final String fullName; // 可能在业务逻辑里拼接了姓氏和名字
private final boolean isAdult; // 是否成年标志位
// Constructor that takes a DTO as parameter to initialize this object's fields.
public UserVO(UserDTO dto){
this.id=dto.getUserId();
this.fullName="Mr./Ms."+dto.getUserName(); // 这里的前缀仅作示意用途
this.isAdult=(dto.getUserAge()>18)?true:false;
}
// Only getter methods are provided since it’s immutable once constructed.
@Override
public String toString(){
return "UserVO{" +
"id="+this.id+
", fullName='" +fullName+ '\'' +
", isAdult=" +isAdult+
'}';
}
}
```
上述代码展示了从数据库读取数据并将其转换为适合网络传输的形式 (`DTO`) ,再进一步加工成为面向用户的呈现形式 (`VO`) 。这种模式有助于保持各层之间的松耦合关系,并使得系统的可维护性和扩展性更强[^1]。
通过这种方式可以有效地分离关注点:`DAO` 负责与持久化存储交互;`Service` 处理核心业务逻辑并将结果打包进 `DTOs`;而最终由 `Controller` 将这些信息组装成易于消费的 `VOS` 发送给前端或其他消费者[^2]。
阅读全文
相关推荐


















