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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【APICloud系列|41】融云单聊及消息的处理的对接与实现

包含了单聊及消息的处理。主要分三个页面处理完成,入口首页(index)、消息列表页(message)、会话页面(chat) index.html var rong;apiready=function(){rong = api.require(rongCloud2);//判断用户登录成功后执行方法rongCloud();}function rongCloud(){//初始化init();/…

SQL2000中@@ERROR的使用提醒

SQL SERVER 2000中不支持TRY, CATCH语法&#xff0c;所以对于异常的捕捉处理只可以根据ERROR来判断&#xff1b; 经常的用法是在执行语句后直接判断ERROR <> 0 看是不是执行成功。 然而日前因为存储过程的多并发调用&#xff0c;对一个表插入数据&#xff0c;产生主键冲突…

tostring 16进制_ToString:身份哈希码的十六进制表示形式

tostring 16进制我以前在方便的Apache Commons ToStringBuilder上写过博客&#xff0c;最近有人问我&#xff0c;在生成的String输出中出现的看似神秘的文本是什么构成的。 询问该问题的同事正确地推测出他正在查看的是哈希码&#xff0c;但与他的实例的哈希码不匹配。 我解释说…

uctools.php,discuz 论坛UCenter无法登录,闪退的终极8种解决办法

最近论坛的UCenter无法登录&#xff0c;闪退的解决办法(密码是正确的)在Discuz官方论坛寻找了无数的解决方法&#xff0c;总结有以下几种&#xff1a;1. 直接在Uc_server修改创始人密码改UC创始人密码。修改UC配置文件 /uc_server/data/config.inc.php对应两行换掉define(UC_FO…

前端工程师应该掌握哪些技能才方便找工作?

作为前端工程师,必须掌握到一定的技能才方便找工作,找高薪工作,你需要掌握这些技能。 高清思维导图下载:https://download.csdn.net/download/weixin_41937552/14752706 目录 HTML5+CSS3 移动Web网页开发

dictionary 用linQ排序

Dictionary<string, int> letterWordTotalNum wordsMrg.GetAllLetterTotalNum();var dicSort from d in letterWordTotalNum orderby d.Key select d;foreach (string key in dicSort.Keys){s Response.Write(dicSort[key] "<br />");}按key进行升…

延迟分析中的案例研究:锁定与同步

特别是在这篇文章中&#xff0c;我们将讨论&#xff1a; java.concurrent.Lock创建的垃圾 比较锁与同步 如何以编程方式测量延迟 争用对锁和同步的影响 协调遗漏对延迟测试的影响 回到我最喜欢的主题之一&#xff0c;垃圾创建/分配。 有关此主题的更多详细信息&#xff0…

思维脑图——数据分析实战(最新版)

导读:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 在统计学领域,将数据分析划分为描述性统计分析、探索性数据分析以及验证性数据分析,探索性数据分析侧重于在数据之中发现新的特征,而验证…

java servlet jsp javabean关系图,一个关于javaBean+servlet+jsp的MVC架构有关问题

当前位置:我的异常网 Java Web开发 一个关于javaBeanservletjsp的MVC架构有关问题一个关于javaBeanservletjsp的MVC架构有关问题www.myexceptions.net 网友分享于&#xff1a;2013-01-14 浏览&#xff1a;13次一个关于javaBeanservletjsp的MVC架构问题//jsp的代码&#xff1…

并发

http://ifeve.com/volatile/转载于:https://www.cnblogs.com/lemon-now/p/5200645.html

java实现一个旅游网站

导读:采用JSP和Java语言以及html脚本语言,同时采用B/S模式,进行各个界面和每个功能的设计与实现,后台管理与设计选用了SQL Server 2005数据库,前台设计与后台管理相结合,共同完成各功能模块的功能。 目录 基本功能 项目结构 项目截图

【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

来源&#xff1a;http://blog.csdn.net/zhaokaiqiang1992 更多&#xff1a;Android AutoLayout全新的适配方式&#xff0c; 堪称适配终结者 Android的屏幕适配一直以来都在折磨着我们这些开发者&#xff0c;本篇文章以Google的官方文档为基础&#xff0c;全面而深入的讲解了And…

matlab ode45 二阶微分,matlab关于ode45解二阶微分方程的困惑

matlab关于ode45解二阶微分方程的困惑matlab关于ode45解二阶微分方程的困惑一个二阶微分方程&#xff1a;yyysin(t)初始条件为y(0)5,y(0)6。过程&#xff1a;先降阶为一阶微分方程组yzz-z-ysin(t)编制如下函数m文件function dyweifen(t,x)dyzeros(2,1);%yx(1)%zx(2)dy(1)x(2);d…

java+jsp+sqlserver 2008+Tomcat实现一个简单的搜索引擎

导读:搜索引擎的定义就是指按照既定的策略与方法,采取相关的计算机程序,通过在互联网中进行寻找信息,并显示信息,最后把找到的信息进行整理和筛选,为搜索引擎的使用者提供检索信息的服务,终极目标是为了提供给使用者,他所搜索信息相关的资料的计算机

精通推荐算法1:为什么需要推荐系统(系列文章,建议收藏)

作者简介&#xff1a; 腾讯算法研究员。硕士毕业于中国科学院大学。在阿里和腾讯工作多年&#xff0c;拥有丰富的搜索和推荐算法经验。CSDN博客专家&#xff0c;原创文章100篇。发表专利15个&#xff0c;其中已授权6个。 系列文章&#xff0c;欢迎关注 精通推荐算法1&#x…

mlse均衡器matlab,基于LMS自适应均衡器matlab仿真.doc

基于LMS自适应均衡器matlab仿真.doc毕 业 设 计(2014届)题 目 一种基于OpenCV的摄像机标定方法学 院 物理电气信息学院专 业 电子信息工程年 级 2010学生学号 1201024534学生姓名 李指导教师2014年5月6日摘要关键词&#xff1a;AbstractIn the field of machine vision and ind…

spring 开发环境_设置Spring 3开发环境

spring 开发环境本教程简要说明了如何设置典型的环境来开发基于Spring的应用程序。 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外&#xff0c;本教程没有其他先决条件。 在教程中&#xff0c;我们将需要安装以下组件&#xff1a; Java 6 JDK更新26 适用于Jav…

mybaties与hibernate的不同点

hibernate是一个比较完全的ORM框架.而mybaties是一个不完全是一个ORM框架,说mybaties不完全是一个ORM框架是因为sql语句是需要自己写的.但是,mybaties也是有输入映射和输出映射的.因此它也有ORM的思想在,因此说mybaties是一个不完全的ORM框架 而且,mybaties的优胜点在与它的速度…

Java+SSM+Oracle+Navicat+Eclipse+Microsoft Visio实现网上招聘系统

导读:整体基于B/S架构,采用MyBatis框架,运用Java中的Servlet、Jsp等关键技术,并结合Oracle数据库的使用,为招聘者和求职者搭建了一个高效、便利的网络平台。本系统分别为求职者和招聘者提供了信息注册功能,登录功能和信息维护功能。除此之外,求职者可以选择发布、撤销或…

matlab求异面直线的公垂线,求异面直线的公垂线

异面直线间得距离 求异面直线之间得距离就是立体几何重、难点之一。常有利用图形性质,直接找出该公 垂线,然后求解;或者通过空间图形性质,将异面直线距离转化为......求异面直线之间距离的常用策略:求异面直线之间的距离是立体几何重、难点之一。 常有利用图形性质,直接找出该公…