java dto entity,entity与DTO完全一致时
完全一致
指的是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完全一致时相关推荐
- java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的
j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的java对 ...
- 1分钟看懂:java 项目中 VO 、DTO、Entity,各自是在什么情况下应用的
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.entity 里的每一个字段,与数据库相对应, 2.vo 里的每一个字段,是和你前台 html ...
- java entity转dto_java 使用反射在dto和entity 实体类之间进行转换
public class Utils { /** * 将dto和entity之间的属性互相转换,dto中属性一般为String等基本类型, * 但是entity中可能有复合主键等复杂类型,需要注意同名 ...
- 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人
微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...
- 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人...
微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...
- pojo、vo、dto、entity都是什么
pojo:即Plain Ordinary Java Object,简单的java对象,实际上就是普通的JavaBeans,是为了和EJB混淆而创造的. pojo是包含了entity.vo和dto的,p ...
- 模型相关术语:Model vs DTO vs Entity vs Value Object vs Pojo vs Bean
此存储库的目标是明确一些术语的含义,这些术语在开发社区中造成了很多混乱.我想提一下,这个澄清将从Java开发人员的角度进行. 型模型 DTO 今天称为数据传输对象的模式在 Core J2EE 模式的第 ...
- 在spring中该如何使用DTO,以及DTO和Entity的关系
1. DTO是用于将后台的数据结构(javaBean)转换为对用户友好的表现方式的数据结构,同时也能防止后台数据直接传送到前台而存在的潜在危险. 2. 可以时候要哪个springbot框架提供的转换器 ...
- java dto 实例_Spring Boot DTO示例:实体到DTO的转换
在本教程中,我们将学习如何在Spring Boot应用程序中创建DTO(数据传输对象)类,以及如何使用ModelMapper库将实体转换为DTO,反之亦然. 数据传输对象设计模式是一种经常使用的设计模 ...
- java 深入了解DTO及如何使用DTO
这篇文章主要来谈论一下DTO使用的场合及其带来的好处.首先要理解DTO是什么? DTO就是数据传输对象(Data Transfer Object)的缩写.DTO模式,是指将数据封装成普通的JavaBe ...
最新文章
- 毕业论文 | 基于MPU6050及卡尔曼滤波的平衡小车设计(源代码与设计文档)
- SpringBoot三种获取Request和Response的方法
- python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
- 英雄联盟更新服务器维护,lol更新维护
- PageHelper工作原理
- mydate97设置时间
- iOS 12第二次大更新发布:曝光重磅硬件
- 搭建开发环境之串口线的选择
- hdu 2546 饭卡 01背包
- android horizontalscrollview 动画,Android 用HorizontalScrollView实现滑动标签tabView
- vscode快建创建vue模板
- 模拟电路——集成运算放大器(1)
- 【Matlab】【碎碎念】 clc、close、close all、clear、clear all等的含义
- 如何查询微信安全情况?域名被微信拦截的因素?
- x86-64汇编入门
- MIT赵选贺再发《Nature Biomedical Engineering》​!
- Android 购物车UI及逻辑实现
- 三十行代码轻松破解山东理工大学教务系统的登录问题
- unity 控制点 贝塞尔曲线_Handles.DrawBezier 绘制贝塞尔曲线
- 大家最关心的问题:大数据培训完一般可以做哪些工作?
热门文章
- 【渝粤题库】国家开放大学2021春1366英语教学理论与实践题目
- java web ssh启动运行程序_[javaweb开发SSH] myeclipse启动tomcat时的bug
- ValueError( Shape(4, ?, 1, 20) and () are incompatible
- emc存储java打开后报错_连接EMC存储系统 - osc_mk8rqvg4的个人空间 - OSCHINA - 中文开源技术交流社区...
- mysql创建文章表_创建表--文章表article
- c++中的new_怎么在java中创建一个自定义的collector
- 每日一问:Android 滑动冲突,你们都是怎样处理的
- drf 解析器,响应器,路由控制
- 广告行业一些常用物料的尺寸
- Bitmap Font生成