实体类对象与Vo视图对象转换举例
实体类对象:
package com.yupi.ojSystem.model.entity; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.util.Date; import lombok.Data; /** * 题目 * @TableName question */ @TableName(value ="question") @Data public class Question implements Serializable { /** * id */ @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 标题 */ private String title; /** * 内容 */ private String content; /** * 标签列表(json 数组) */ private String tags; /** * 题目答案 */ private String answer; /** * 题目提交数 */ private Integer submitNum; /** * 题目通过数 */ private Integer acceptedNum; /** * 判题用例(json 数组) */ private String judgeCase; /** * 判题配置(json 对象) */ private String judgeConfig; /** * 点赞数 */ private Integer thumbNum; /** * 收藏数 */ private Integer favourNum; /** * 创建用户 id */ private Long userId; /** * 创建时间 */ private Date createTime; /** * 更新时间 */ private Date updateTime; /** * 是否删除 */ @TableLogic private Integer isDelete; @TableField(exist = false) private static final long serialVersionUID = 1L; }
视图Vo对象:
package com.yupi.ojSystem.model.vo; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.yupi.ojSystem.model.dto.question.JudgeConfig; import com.yupi.ojSystem.model.entity.Question; import lombok.Data; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import java.io.Serializable; import java.util.Date; import java.util.List; /** * 问题Vo */ @Data public class QuestionVo implements Serializable { /** * id */ private Long id; /** * 标题 */ private String title; /** * 内容 */ private String content; /** * 标签列表 */ private List<String> tags; /** * 题目提交数 */ private Integer submitNum; /** * 题目通过数 */ private Integer acceptedNum; /** * 判题配置(json 对象) */ private JudgeConfig judgeConfig; /** * 点赞数 */ private Integer thumbNum; /** * 收藏数 */ private Integer favourNum; /** * 创建用户 id */ private Long userId; /** * 创建时间 */ private Date createTime; /** * 更新时间 */ private Date updateTime; /** * 创建题目人信息 */ private UserVO userVO; /** * Vo转实体对象 * @param questionVo * @return */ public static Question voToObj(QuestionVo questionVo) { if (ObjectUtils.isEmpty(questionVo)) { return null; } Question question = new Question(); BeanUtils.copyProperties(questionVo, question); List<String> tagList = questionVo.getTags(); if (!CollectionUtils.isEmpty(tagList)) { question.setTags(JSONUtil.toJsonStr(tagList)); } JudgeConfig judgeConfigVo = questionVo.getJudgeConfig(); if (!ObjectUtils.isEmpty(judgeConfigVo)) { question.setJudgeConfig(JSONUtil.toJsonStr(judgeConfigVo)); } return question; } /** * 实体对象转Vo * @param question * @return */ public static QuestionVo objToVo(Question question) { if (ObjectUtils.isEmpty(question)) { return null; } QuestionVo questionVo = new QuestionVo(); BeanUtils.copyProperties(question, questionVo); String tags = question.getTags(); if (StrUtil.isNotBlank(tags)) { List<String> tagList = JSONUtil.toList(tags, String.class); questionVo.setTags(tagList); } if (StrUtil.isNotBlank(question.getJudgeConfig())) { questionVo.setJudgeConfig(JSONUtil.toBean(question.getJudgeConfig(), JudgeConfig.class)); } return questionVo; } private static final long serialVersionUID = 1L; }
__EOF__

本文作者:techgy
本文链接:https://www.cnblogs.com/techgy/p/17999107.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/techgy/p/17999107.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2021-01-31 数字分类