完全一致

指的是entity与DTO之间参数名、参数类型、参数个数全部相同的情况

entity代码

package com.hxd.simple.domain.entity;

import java.io.Serializable;

import java.time.LocalDateTime;

/**

* @author hxd

*/

public class User implements Serializable {

/**

* 用户id

*/

private Integer id;

/**

* 姓名

*/

private String name;

/**

* 创建时间

*/

private LocalDateTime createTime;

/**

* 序列化id

*/

private static final long serialVersionUID = 1L;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public LocalDateTime getCreateTime() {

return createTime;

}

public void setCreateTime(LocalDateTime createTime) {

this.createTime = createTime;

}

public User() {

}

public User(Integer id, String name, LocalDateTime createTime) {

this.id = id;

this.name = name;

this.createTime = createTime;

}

}

DTO代码

package com.hxd.simple.domain.dto.response;

import java.io.Serializable;

import java.time.LocalDateTime;

/**

* @author hxd

*/

public class UserDTO implements Serializable {

/**

* 用户id

*/

private Integer id;

/**

* 用户名

*/

private String name;

/**

* 创建时间

*/

private LocalDateTime createTime;

/**

* 序列化id

*/

private static final long serialVersionUID = 1L;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public LocalDateTime getCreateTime() {

return createTime;

}

public void setCreateTime(LocalDateTime createTime) {

this.createTime = createTime;

}

public static long getSerialVersionUID() {

return serialVersionUID;

}

}

mapstruct代码

package com.hxd.simple.domain.mapstruct;

import com.hxd.simple.domain.dto.response.UserDTO;

import com.hxd.simple.domain.entity.User;

import org.mapstruct.Mapper;

import java.util.List;

@Mapper(componentModel = "spring")

public interface UserMapStruct {

/**

* 实体类转DTO

* @param user 实体类

* @return DTO对象

*/

UserDTO toResponseDTO(User user);

/**

* 将实体类集合转换成DTO集合

* @param source 实体类集合

* @return DTO集合

*/

List toResponseListDTO(List source);

}

使用mapstruct实现entity转DTO

package com.hxd.simple.controller;

import com.hxd.simple.domain.dto.response.UserDTO;

import com.hxd.simple.domain.entity.User;

import com.hxd.simple.domain.mapstruct.UserMapStruct;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

import java.time.LocalDateTime;

import java.util.ArrayList;

import java.util.List;

@RestController

@RequestMapping("/user")

public class UserController {

@Resource

private UserMapStruct userMapStruct;

@GetMapping("/getUser")

public UserDTO getUser() {

User user = new User();

user.setId(1111);

user.setName("张三");

user.setCreateTime(LocalDateTime.now());

return userMapStruct.toResponseDTO(user);

}

@GetMapping("/getUserList")

public List getUserList() {

List userList = new ArrayList<>();

User user1 = new User(1001, "zs", LocalDateTime.now());

User user2 = new User(1002, "ls", LocalDateTime.now());

User user3 = new User(1003, "ww", LocalDateTime.now());

User user4 = new User(1004, "zl", LocalDateTime.now());

userList.add(user1);

userList.add(user2);

userList.add(user3);

userList.add(user4);

return userMapStruct.toResponseListDTO(userList);

}

}

使用mapstruct实现entity转DTO

package com.hxd.simple.controller;

import com.hxd.simple.domain.dto.response.UserDTO;

import com.hxd.simple.domain.entity.User;

import com.hxd.simple.domain.mapstruct.UserMapStruct;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

import java.time.LocalDateTime;

import java.util.ArrayList;

import java.util.List;

@RestController

@RequestMapping("/user")

public class UserController {

@Resource

private UserMapStruct userMapStruct;

@GetMapping("/getUser")

public UserDTO getUser() {

User user = new User();

user.setId(1111);

user.setName("张三");

user.setCreateTime(LocalDateTime.now());

return userMapStruct.toResponseDTO(user);

}

@GetMapping("/getUserList")

public List getUserList() {

List userList = new ArrayList<>();

User user1 = new User(1001, "zs", LocalDateTime.now());

User user2 = new User(1002, "ls", LocalDateTime.now());

User user3 = new User(1003, "ww", LocalDateTime.now());

User user4 = new User(1004, "zl", LocalDateTime.now());

userList.add(user1);

userList.add(user2);

userList.add(user3);

userList.add(user4);

return userMapStruct.toResponseListDTO(userList);

}

}

总结:

1.entity与DTO完全一致时,mapstruct接口比较简单

2.mapstruct的使用与常规的Spring的bean一样,关键是@Mapper注解的componentModel = "spring",此注解会在生成的mapstruct接口的实现类上加@Component注解

3.mapstruct生成的class文件如下:

package com.hxd.simple.domain.mapstruct;

import com.hxd.simple.domain.dto.response.UserDTO;

import com.hxd.simple.domain.entity.User;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.springframework.stereotype.Component;

@Component

public class UserMapStructImpl implements UserMapStruct {

public UserMapStructImpl() {

}

public UserDTO toResponseDTO(User user) {

if (user == null) {

return null;

} else {

UserDTO userDTO = new UserDTO();

userDTO.setId(user.getId());

userDTO.setName(user.getName());

userDTO.setCreateTime(user.getCreateTime());

return userDTO;

}

}

public List toResponseListDTO(List source) {

if (source == null) {

return null;

} else {

List list = new ArrayList(source.size());

Iterator var3 = source.iterator();

while(var3.hasNext()) {

User user = (User)var3.next();

list.add(this.toResponseDTO(user));

}

return list;

}

}

}

4.要想实现List转List,必须先实现单个entity转DTO

java dto entity,entity与DTO完全一致时相关推荐

  1. java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的

    j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的java对 ...

  2. 1分钟看懂:java 项目中 VO 、DTO、Entity,各自是在什么情况下应用的

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.entity 里的每一个字段,与数据库相对应, 2.vo 里的每一个字段,是和你前台 html ...

  3. java entity转dto_java 使用反射在dto和entity 实体类之间进行转换

    public class Utils { /** * 将dto和entity之间的属性互相转换,dto中属性一般为String等基本类型, * 但是entity中可能有复合主键等复杂类型,需要注意同名 ...

  4. 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人

    微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...

  5. 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人...

    微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...

  6. pojo、vo、dto、entity都是什么

    pojo:即Plain Ordinary Java Object,简单的java对象,实际上就是普通的JavaBeans,是为了和EJB混淆而创造的. pojo是包含了entity.vo和dto的,p ...

  7. 模型相关术语:Model vs DTO vs Entity vs Value Object vs Pojo vs Bean

    此存储库的目标是明确一些术语的含义,这些术语在开发社区中造成了很多混乱.我想提一下,这个澄清将从Java开发人员的角度进行. 型模型 DTO 今天称为数据传输对象的模式在 Core J2EE 模式的第 ...

  8. 在spring中该如何使用DTO,以及DTO和Entity的关系

    1. DTO是用于将后台的数据结构(javaBean)转换为对用户友好的表现方式的数据结构,同时也能防止后台数据直接传送到前台而存在的潜在危险. 2. 可以时候要哪个springbot框架提供的转换器 ...

  9. java dto 实例_Spring Boot DTO示例:实体到DTO的转换

    在本教程中,我们将学习如何在Spring Boot应用程序中创建DTO(数据传输对象)类,以及如何使用ModelMapper库将实体转换为DTO,反之亦然. 数据传输对象设计模式是一种经常使用的设计模 ...

  10. java 深入了解DTO及如何使用DTO

    这篇文章主要来谈论一下DTO使用的场合及其带来的好处.首先要理解DTO是什么? DTO就是数据传输对象(Data Transfer Object)的缩写.DTO模式,是指将数据封装成普通的JavaBe ...

最新文章

  1. 毕业论文 | 基于MPU6050及卡尔曼滤波的平衡小车设计(源代码与设计文档)
  2. SpringBoot三种获取Request和Response的方法
  3. python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
  4. 英雄联盟更新服务器维护,lol更新维护
  5. PageHelper工作原理
  6. mydate97设置时间
  7. iOS 12第二次大更新发布:曝光重磅硬件
  8. 搭建开发环境之串口线的选择
  9. hdu 2546 饭卡 01背包
  10. android horizontalscrollview 动画,Android 用HorizontalScrollView实现滑动标签tabView
  11. vscode快建创建vue模板
  12. 模拟电路——集成运算放大器(1)
  13. 【Matlab】【碎碎念】 clc、close、close all、clear、clear all等的含义
  14. 如何查询微信安全情况?域名被微信拦截的因素?
  15. x86-64汇编入门
  16. MIT赵选贺再发《Nature Biomedical Engineering》​!
  17. Android 购物车UI及逻辑实现
  18. 三十行代码轻松破解山东理工大学教务系统的登录问题
  19. unity 控制点 贝塞尔曲线_Handles.DrawBezier 绘制贝塞尔曲线
  20. 大家最关心的问题:大数据培训完一般可以做哪些工作?

热门文章

  1. 【渝粤题库】国家开放大学2021春1366英语教学理论与实践题目
  2. java web ssh启动运行程序_[javaweb开发SSH] myeclipse启动tomcat时的bug
  3. ValueError( Shape(4, ?, 1, 20) and () are incompatible
  4. emc存储java打开后报错_连接EMC存储系统 - osc_mk8rqvg4的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. mysql创建文章表_创建表--文章表article
  6. c++中的new_怎么在java中创建一个自定义的collector
  7. 每日一问:Android 滑动冲突,你们都是怎样处理的
  8. drf 解析器,响应器,路由控制
  9. 广告行业一些常用物料的尺寸
  10. Bitmap Font生成