共计 1500 个字符,预计需要花费 4 分钟才能阅读完成。
// PO (持久对象) - 对应数据库中的一个表
public class UserPO {
private Long id;
private String username;
private String email;
// ...其他属性
// getter和setter方法
}
// DTO (数据传输对象) - 用于服务层和展示层之间的数据传输
public class UserDTO {
private String username;
private String email;
// 可能还有其他用于传输的属性
// getter和setter方法
}
// VO (值对象) - 用于展示层的数据封装
public class UserVO {
private String username;
private String email;
// 只包含展示给前端的属性
// getter和setter方法
}
// DAO (数据访问对象) - 封装对数据库的访问
public interface UserDAO {
UserPO findById(Long id);
void save(UserPO user);
// ...其他CRUD操作
}
// 服务层 - 处理业务逻辑
public class UserService {
private UserDAO userDAO;
public UserDTO getUser(Long id) {
UserPO userPO = userDAO.findById(id);
UserDTO userDTO = new UserDTO();
userDTO.setUsername(userPO.getUsername());
userDTO.setEmail(userPO.getEmail());
// ...转换其他属性
return userDTO;
}
public void createUser(UserDTO userDTO) {
UserPO userPO = new UserPO();
userPO.setUsername(userDTO.getUsername());
userPO.setEmail(userDTO.getEmail());
// ...设置其他属性
userDAO.save(userPO);
}
}
// 展示层 - 处理与用户界面的交互
public class UserController {
private UserService userService;
public UserVO getUser(Long id) {
UserDTO userDTO = userService.getUser(id);
UserVO userVO = new UserVO();
userVO.setUsername(userDTO.getUsername());
userVO.setEmail(userDTO.getEmail());
// ...转换其他属性
return userVO;
}
public void createUser(UserVO userVO) {
UserDTO userDTO = new UserDTO();
userDTO.setUsername(userVO.getUsername());
userDTO.setEmail(userVO.getEmail());
// ...转换其他属性
userService.createUser(userDTO);
}
}
- VO:前端到Controller的 Object
- DTO:Controller到Service的 Object
- BO:Service到Controller的 Object
- PO:Service到DAO的 Object
- DO:DAO返回给Service的Object
- POJO : 只需要继承Object 就可以,DO、DTO、PO、VO 都属于POJO
正文完