Java实体类之间的相互转换

实体类之间的转换 类直接的转换 阅读详情

前言

为什么要实体类之间相互转换呢?
1.防止数据的泄露,比如使用Hibernate查询用户表,用户表有用户的账号和密码,我们后端给前端数据的时候并不希望给前端传递密码这个字段。
2.防止数据过大,前端无法接收,hibernate使用的是关联查询,如果关联的表非常多的话前端接收会报错。
3.更好的前后端分离,前端不用考虑后端的业务逻辑。而后端只需要给出返回的结果是否成功的编码和具体提示内容以及其它信息。

在pom.xml配置文件中添加依赖

   <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>23.4-jre</version>
   </dependency>

创建第一个实体类School

public class School {
    private Integer schoolId;
    private String schoolName;
    private String name;
    //省略getter和setter方法
    }

创建第二个实体类

public class SchoolDTO {
    private Integer schoolId;
    private String schoolName;
    //省略getter和setter方法
     
     //创建转换方法
     public School convertTo() {
        OrderConverter convert = new OrderConverter();
        return convert.convert(this);
    }

    public SchoolDTO convertFrom(School order) {
        OrderConverter convert = new OrderConverter();
        return convert.reverse().convert(order);
    }
    private static class OrderConverter extends Converter<SchoolDTO, School> {

        @Override
        protected School doForward(SchoolDTO schoolDTO) {

            return null;
        }
        //具体的转换内容
        @Override
        protected SchoolDTO doBackward(School school) {
            SchoolDTO dto = new SchoolDTO();
            dto.setSchoolId(school.getSchoolId());
            dto.setSchoolName(school.getSchoolName());
            return dto;
        }
    }
    }

创建测试类(一条数据转换)

public class test {
    public static void main(String[] args) {
        //一条数据转换
        School school = new School();
        school.setSchoolId(1);
        school.setSchoolName("上海理工大学");
        school.setName("李四");
        SchoolDTO dto = new SchoolDTO().convertFrom(school);
        System.out.println(dto);
        //Page类型数据转换
        //schools.map(s -> new SchoolDTO().convertFrom(s));
        //List类型
        /*
        List<SchoolDTO> list = dto.stream().map(address -> {
           return  new SchoolDTO().convertFrom(address);
        }).collect(Collectors.toList());
        */
    }

输入结果:

SchoolDTO{schoolId=1, schoolName='上海理工大学'}

第二种,直接使用this

1、首先创建一个操作数据库的实体类:School,和用来给前端传递内容的实体类SchoolDTO

public class School {
    private Integer id;
    private String schoolName;
    private String address;
    //省略getter和setter方法
    }

public class SchoolDTO {
    private Integer id;
    private String schoolName;
    private String address;
    //省略getter和setter方法
    //省略toString方法
    //转换方法
    public SchoolDTO toSchool(School dto){
    this.setId(dto.getId());
    this.setAddress("转换的结果是:"+dto.getAddress());
    this.setSchoolName("转换的结果是:"+dto.getSchoolName());
    return this;
    }
    }

2、测试方法进行测试

public class TestController {
    public static void main(String[] args) {
        School school = new School();
        school.setId(1);
        school.setSchoolName("北京大学");
        school.setAddress("北京");
        //打印内容
        System.out.println(new SchoolDTO().toSchool(school));
    }
}

3、打印结果
在这里插入图片描述
这种方法比较方便,不用引用jar的依赖

JavaBean,Protobuf互相转换 公司使用谷歌的protobuf来进行数据传输,DO 对象对内,DTO对象对外,对于DT与DTO的转换还是手写的build/set,感觉效率太低,所以需要找一个专门用来解决转换问题的工具。MapStruct 对标的是和,但是性能却比这两种好上许多倍。MapStruct 就是这样的一个属性映射工具,且效率比BeanUtil高很多,只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了复杂繁琐的映射实现。MapStruct官网地址:DO(业务实体对象),DTO(数据传输对象。 阅读详情

相关推荐

java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream使用

1.list与字符串互转 // 导入阿里的fastJson.jar <!--添加fastjson依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> // 其中JSONObj

fwdwqdwq的博客 1498

Java_实体类(Entity)转换VO

方法一:前提是属性名一致,如果两个类属性名不一致,赋值不上了 方法二:如果两个类的属性值不同,可以用下面的赋值, 除了单个对象,集合对象也是可以的。 还可以两个对象合并成一个对象。 1、POM依赖 2 、自定义接口 3、调用接口进行赋值...

骑大马挎大刀 4686

DSP TMS320F280049之CCS工程的建立(库函数版)

TMS320F280049 DSP是TI最新出的一款C2000系列的DSP,主频为100MHZ,功能较为强大,具有较多的片上模拟外设。这一节主要讲述如何新建F280049的CCS工程。 Step1.下载文件: 下载C2000Ware软件并安装。下载地址如下: http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000Ware%2...

fanxianyan1993的博客 1万+

java 两个实体类转换_实体类之间的转换

packagecom.dongl.utils;importorg.dozer.DozerBeanMapper;importorg.springframework.beans.BeansException;importorg.springframework.beans.FatalBeanException;importorg.springframework.util.Assert;importorg...

weixin_30240765的博客 1万+

Halcon深度图转伪彩图

Halcon深度图转伪彩图

Quintin 3933

ensp企业网综合实验(课程设计)

使用MSTP+VRRP技术实现负载均衡以及增加网络的可靠性;出口配置napt;所有用户均为自动获取IP地址;

qq_50829760的博客 1万+

java两个实体类相互转换

BeanUtil.copyProperties(源类, 需要改变的类); 注意是BeanUtil,不是BeanUtils

兔老大的胡萝卜 5712

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5551

Java开发中xml和javabean实体类之间的相互转换

Java开发中xml和javabean实体类之间的相互转换 目录 Java开发中xml和javabean实体类之间的相互转换 1.xml转javabean 1.1 xml格式如下,只有一层的: 1.2有两层的xml, 2.vo转xml 1.xml转javabean 1.1 xml格式如下,只有一层的: &lt;?xml version='1.0' encoding='UTF-8...

qq_31968809的博客 3468

javafx结合Scene Builder自定义fxml实现漂亮的登录界面、自定义最小化、关闭按钮

本节主要介绍了如何结合Scene Builder工具来制作一个好看又漂亮的登录界面,以及介绍了如何在程序中调用生成界面文件fxml文件,如何获取到fxml文件中的组件等,并演示登录、最小化和关闭等功能。

c1007857613的专栏 5220

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(五)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1510

java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换

主要是用来实体类与xml的相互转换, 如果需要将xml存进数据库,oracle建议使用 clob类型 这样直接可以当成字符串来使用首先需要引用包 需要的jar包如下: xpp3_min-1.1.4c.jar xstream-1.3.jar或者使用maven<dependency> <groupId>com.thoughtworks.xstream</groupId> <ar

cc_yy_zh的博客 2247

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

statistics+insight+vista+power 528

Java中string,json,实体类之间的相互转换

JSONObject,JSONArray(alibaba.fastjson) String转Object: Object obj = str; //直接转就行 Object转String: String str = obj.toString; String转JSONObject: JSONObject jsonObject = JSONObject.parseObject(str); 注(String str = "{"abc":"1","hahah":"2"}";//str必须满足以下格式)

木牛马 3468

团体程序设计天梯赛竞赛题--登顶题【L3-042 污染大亨】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 1361

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java实体类对象,JSON字符串,JSON之间的相互转换

Java实体类定义 在实际使用中一般是数据库对应的实体类,运用工具生成就好,如mybatis-generator import java.io.Serializable; public class User implements Serializable { private Integer id; private String username; private String password; private static final long serialV

Blogs of imWalker 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream流使用

java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream使用,json字符串转换

一名后端程序猿 8916

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAVA list实体类转换通用_json <--->List集合,实体类 之间的相互转换

packagecom.hp.svse;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importnet.sf.json.JsonConfig;public classJsonTest {publi...

weixin_29231221的博客 2933

Json字符串和Java实体类之间的相互转换(利用jackson实现)

转自:http://blog.youkuaiyun.com/weixin_37232894/article/details/59482789 import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessi

layman1024的博客 4151

Java开发中利用JAXBContext 和 Unmarshaller、Marshaller 实现xml和javabean实体类之间的相互转换

1.xml转javabean 1.1 xml格式如下,只有一层的: <?xml version='1.0' encoding='UTF-8'?> <root> <company>10000</company> <descr>公司</descr> <descrshort>公司简称</descrshort> <country>国家</country> <phone>电话</p

u010741112的博客 2402

json字符串转换成java实体类_Json字符串和Java实体类之间的相互转换(利用jackson实现)...

import java.io.IOException;import com.fasterxml.jackson.core.JsonParseException;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonMappingException;imp...

weixin_28935113的博客 175

Android JSON数据与实体类之间的相互转化

import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import ...

冰雪世界 3839
上一篇: Java获取各种日期
下一篇: Java中&&和||混用需要注意的情况
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值