概述:

通常是一张表对应Java的一个实体类,但在很多时候,接口返回给前端的数据远不如此。举个栗子:在一张存放作者发布的文章的表中(生成的实体类名PO),仅仅存有用户的ID,但是后端文章列表接口中需要返回作者的中文名,也需要返回用户的ID,这个时候,PO中不存在存储用户的中文名这个字段,所以,就需要建立DTO实体类增加字段来扩充PO,进而操作DTO来实现字段扩充。

DTO与PO之间的字段赋值,我之前的做法是将PO中的字段一一Set到DTO中(原谅我知道这个方法比较晚... ...),该方法太繁琐,尤其在字段繁多的情况下。以下将Dozer介绍给和我一样被此问题困扰的伙伴。

方法:

1、pom.xml中引入dozer

<!-- https://mvnrepository.com/artifact/net.sf.dozer/dozer -->
<dependency>
        <groupId>net.sf.dozer</groupId>
        <artifactId>dozer</artifactId>
        <version>5.5.1</version>
</dependency>

2、新建DTO继承PO

@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class TemplateConfDto extends TemplateConf {/*** 创建者*/private String createByD;/*** 职位中文名*/private String jobName;
}

3、属性映射(具体叫什么我也不清楚,哼哼哼~~~)

// 获取结果
List<TemplateConf> records = resPage.getRecords();
// 结果集
List<TemplateConfDto> resList = new ArrayList<>();
// 实例化Dozer
DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
records.forEach(li -> {// 新建DTO实体TemplateConfDto templateConfDto = new TemplateConfDto();// 创建者登录名templateConfDto.setCreateByD(userMapper.selectUserNameById(li.getCreateBy()));// 职位中文名templateConfDto.setJobName(jobMapper.selectJobNameById(li.getJobId()));// 属性拷贝dozerBeanMapper.map(PO, DTO);dozerBeanMapper.map(li, templateConfDto);resList.add(templateConfDto);
});

以上就是我分享的内容,希望能够帮助你 ^_^,能力有限,不足之处还望大神指点

Java实体类(Dto)映射相关推荐

  1. java实体类没有映射文件_MyBatis自动生成实体类、DAO和XML映射文件,并去掉实体类中的getter和setter方法...

    今天花了3个多小时搞定了这个事情,写个Blog记录一下,先看一下最终生成的实体类吧. packagecom.mybatis.pojo;importlombok.AllArgsConstructor;i ...

  2. ibatis学习笔记(三)java实体跟表映射.xml文件详解

    在项目中使用Ibatis难免会使用到java实体跟表映射.xml. <?xml version="1.0" encoding="UTF-8" ?> ...

  3. java 实体类 临时注解_JPA:Java持久层API--配置流程

    一.JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...

  4. MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结

    在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下 ...

  5. dao和mysql映射_hibernate通过数据库生成实体类,映射文件和DAO(实用)

    hibernate通过数据库生成实体类,映射文件和DAO(实用) (2011-04-06 17:22:32) 标签: 杂谈 上次谈到利用MyEclipse从数据库反向生成实体类之JPA方式,这次我们来 ...

  6. mysql语句生成在线_在线数据库表(sql语句)生成java实体类工具

    相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...

  7. 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...

    笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...

  8. JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean...

    由于JAVA的基本类型会有默认值,例如当某个类中存在private  int age;字段时,创建这个类时,age会有默认值0.当使用age属性时,它总会有值.因此在某些情况下,便无法实现age为nu ...

  9. 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成...

    写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法: 1.点击类旁边的警告符号: 2.选择Add generated seria ...

  10. Java : 实体类不能序列化异常

    Java : 实体类不能序列化异常 参考文章: (1)Java : 实体类不能序列化异常 (2)https://www.cnblogs.com/cccy0/p/9496435.html (3)http ...

最新文章

  1. 华为正式发布5G商用芯片、5G终端!
  2. 【Python学习系列十五】pandas库DataFrame行列操作使用方法
  3. 币未来趋势分析_分析:中国便利店零售市场现状以及未来发展趋势
  4. boost::hana::remove_at用法的测试程序
  5. 字符串关键字的散列映射 (25 分)【详细解析】
  6. java在线预览txt、word、ppt、execel,pdf代码
  7. js、react对象名和对象属性赋值
  8. 解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题
  9. frc机器人比赛主题_RCC机器人比赛
  10. OpenCV3 install tutorial for Mac
  11. EverWeb for Mac(网页设计软件)
  12. 计算机网络工程师模拟题库,网络工程师模拟试题
  13. 法兰克焊接机器人编程入门_FANUC机器人应用
  14. 显示最新的Picasaweb上传
  15. Win10预览版已经支持WSL的带GUI的应用
  16. 一个完全的新人如何搭建自己的个人网站
  17. aspx创建控件时出错,服务器标记的格式不正确
  18. 【转】OrCAD 16.3安装和破解方法
  19. 基于Redis实现在线游戏积分排行榜
  20. [APIO2010] 特别行动队

热门文章

  1. php爬虫模拟浏览器,PHP模拟浏览器访问,抓取非本地文件的几种方法「爬虫」
  2. javascript延迟加载方式
  3. Git仓库建立与连接远程仓库
  4. OpenCV学习(76)
  5. BZOJ1015 [JSOI2008]星球大战starwar(并查集)
  6. 【易通慧谷】2018年海南电信OSS运营支撑体系
  7. JRuby入门学习:建立第一个Hello World
  8. 【2022最新Java面试宝典】—— Tomcat面试题(15道含答案)
  9. QT 实现软件在线更新功能
  10. php商城系统文和答题_基于PHP的网上商城系统分析与设计