概述:

通常是一张表对应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. Android源码学习之工厂方法模式应用
  2. SAP中寻找增强的实现方法
  3. 博客园Logo创意之我的朋友弄的
  4. Mysql重置初始密码的方法
  5. java 实现超时_如何实现带有超时的Runnable? - java
  6. MySQL笔记-事务理论及并发存在的三个问题(脏读、不可重复读、幻读)演示
  7. iphone 2x 3x_iPhone X的未来:从现实到荒诞
  8. Hibernate讲解(三)-Hibernate的基本映射数据类型
  9. 点阵字体显示系列之一:ASCII码字库的显示
  10. redis查询冒号下_实战|还在用单机版?教你用Docker+Redis搭建主从复制多实例
  11. ajax ----进度条的原理
  12. GitHub项目推荐
  13. 【Unity】关于ScreenCapture.CaptureScreenshot截屏的尝试
  14. [Linux command]批处理注释
  15. 数字功放芯片的工作原理以及应用领域
  16. 生成自己的自签名证书
  17. java学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,根据性别分别进入男子组和女子组使用if条件语句
  18. P1106 删数问题【贪心】
  19. js实现螺旋纹理特效
  20. html水平线 虚线

热门文章

  1. Java工程师可以从事哪些工作?
  2. 打开计算机5037端口,adb 5037端口被占用
  3. 最新深度学习入门高赞教材,只需高中数学基础 | 资源
  4. 全球及中国干膜润滑剂行业研究及十四五规划分析报告
  5. 对比几款目前流行的 Linux 发行版
  6. 背单词软件(大一课设作业)
  7. 鸿蒙系统兼容apk吗,首批支持鸿蒙系统的手机有哪些?华为鸿蒙系统支持机型全一览...
  8. SDOI2016R1(不是解题报告)
  9. Sphinx 三种常见数据源配置
  10. 有多个客服账号,让指定的客服有接待功能,指定客服接待聊天怎么做?