vo的使用

本文介绍了一种在Java中实现API响应结果的封装方法,通过两个不同的类来展示如何自定义响应结构。一种方式是使用标准Java类实现,另一种则是利用Lombok简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VO类

写法一:

package com.greathiit.common.web;

import java.io.Serializable;

import com.alibaba.fastjson.JSON;

/**
 * 统一API响应结果封装
 */
public class Result implements Serializable{
    private int code;
    private String msg;
    private long count;
    private Object data;

    public Result setCode(ResultCode resultCode) {
        this.code = resultCode.code;
        return this;
    }

    public int getCode() {
        return code;
    }

    public Result setCode(int code) {
        this.code = code;
        return this;
    }

    public String getMsg() {
  return msg;
 }

 public Result setMsg(String msg) {
  this.msg = msg;
  return this;
 }

 public long getCount() {
  return count;
 }

 public Result setCount(long count) {
  this.count = count;
  return this;
 }

 public Object getData() {
        return data;
    }

    public Result setData(Object data) {
        this.data = data;
        return this;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}

写法二:

import lombok.Data;
import java.util.List;

@Data
public class DataVo<T>{
    private Integer code;
    private String msg;
    private Integer count;
    private List<T> data;
}
### 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值