Dozer的使用(整合springboot)

article/2025/9/9 15:04:01

dozer是实体类与实体类之间转换的工具,下面是简单操作配置

引入依赖:

<!--dozer 实体类转换工具--><dependency><groupId>net.sf.dozer</groupId><artifactId>dozer-spring</artifactId><version>5.5.1</version></dependency><dependency><groupId>net.sf.dozer</groupId><artifactId>dozer</artifactId><version>5.5.1</version></dependency>

首先是dozer的配置,写配置类

import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Arrays;/*** @author zxy* @Classname DozerMapperConfig* @Date 2022/3/29 16:10*/
@Configuration
public class DozerMapperConfig {@Bean(name = "org.dozer.Mapper")public Mapper mapper(){DozerBeanMapper mapper = new DozerBeanMapper();//如果要读取多个或者一个xml文件,则将写进下面地址,如果不需要xml配置则不用。// mapper.setMappingFiles(Arrays.asList("dozer/dozer-mapping.xml","dozer/xxx.xml"));return mapper;}
}

接下来封装一下转换工具


import org.dozer.DozerBeanMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.dozer.Mapper;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/*** @author zxy* @Classname GeneralConvertor* @Date 2022/3/29 15:21*/
@Component
public class GeneralConvertor {@ResourceMapper mapper;/*** List  实体类 转换器* @return*/public <T, S> List<T> convertor(List<S> source, Class<T> clz) {if (source == null) return null;List<T> map = new ArrayList<>();for (S s : source) {map.add(mapper.map(s, clz));}return map;}/*** Set 实体类 深度转换器* @return*/public <T, S> Set<T> convertor(Set<S> source, Class<T> clz) {if (source == null) return null;Set<T> set = new TreeSet<>();for (S s : source) {set.add(mapper.map(s, clz));}return set;}/*** 实体类 深度转换器* @return*/public <T, S> T convertor(S source, Class<T> clz) {if (source == null) return null;return mapper.map(source, clz);}public void convertor(Object source, Object object) {mapper.map(source, object);}public <T> void copyConvertor(T source, Object object) {mapper.map(source, object);}}

 接下来是dozer的xml配置,但是我没有使用,

<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://dozer.sourceforge.net"xsi:schemaLocation="http://dozer.sourceforge.nethttp://dozer.sourceforge.net/schema/beanmapping.xsd"><mapping><!--对应的实体和要转换成的VO或者使用注解@Mapping,使用注解就不用配置类了--><!--@Mapping 用在字段名不一样的地方,下面的field同理--><class-a>com.jntech.model.sqlserver2.Employee</class-a><class-b>com.jntech.vo.EmployeeVO</class-b><!--对应要转换的属性名.<a>和<class-a>对应,其它同理--><field><a>employeeid</a><b>id</b></field><field><a>emaddress</a><b>address</b></field></mapping>
</mappings>

然后创建两个实体类测试

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;import java.io.Serializable;/*** <p>* * </p>** @author zxy* @since 2022-03-23*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="User对象", description="")
@TableName("user")
public class UserDO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "UUID用户id")@TableId(type = IdType.ASSIGN_UUID)private String userId;@ApiModelProperty(value = "登录用户名")private String username;@ApiModelProperty(value = "密码")private String password;@ApiModelProperty(value = "用户信息id")private String userInfoId;@ApiModelProperty(value = "用户权限")private String role;@ApiModelProperty(value = "创建时间")private Long ctime;@ApiModelProperty(value = "修改时间")private Long mtime;}
import lombok.Data;/*** @author zxy* @Classname UserVO* @Date 2022/3/29 15:18*/
@Data
public class UserVO {private String userId;private String username;private String userInfoId;private String Role;
}

最后进行单元测试


http://chatgpt.dhexx.cn/article/HaZ26vIc.shtml

相关文章

【JAVA】Dozer 介绍及快速入门教程

文章目录 概述使用安装入门XML 映射注解映射SpringBoot 集成 结语 概述 Dozer 是什么? Dozer 是 Java Bean 到 Java Bean 的映射器&#xff0c;他以递归的方式将数据从一个对象复制到另一个对象。 它支持简单的属性映射&#xff0c;复杂类型映射&#xff0c;双向映射&#…

1.Dubbo教程

转自&#xff1a;https://blog.csdn.net/hellozpc/article/details/78575773 2. 什么是dubbo 2.1. 简介 DUBBO是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;是阿里巴巴SOA服务化治理方案的核心框架&#xff0c;每天为2,000个服务…

黑马程序员Dubbo快速入门,Java分布式框架dubbo教程

分布式系统中的相关概念 &#xff08;一&#xff09;互联网项目架构目标-特点 &#xff08;二&#xff09;互联网项目架构目标-目标 &#xff08;三&#xff09;集群和分布式 &#xff08;四&#xff09;架构演进 Dubbo概述 &#xff08;一&#xff09;dubbo概述 1、dub…

Dubbo快速入门教程

Dubbo入门教程 1 、Dubbo概述 DUbbo架构 2、Dubbo快速入门 Zookeeper 安装传统的模块化开发Duboo入门小案例 修改Service模块代码修改WEB模块代码增加公共的接口模块 3、Dubbo高级特性 dubbo-admin管理平台 dubbo-adminm安装 一、dubbo-admin安装二、dubbo-admin简单使用 序…

dubbo教程总结(springboot+dubbo)

概述 Apache Dubbo 是一款微服务开发框架&#xff0c;它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着&#xff0c;使用 Dubbo 开发的微服务&#xff0c;将具备相互之间的远程发现与通信能力&#xff0c; 同时利用 Dubbo 提供的丰富服务治理能力&#xff0c;可以实现诸…

Dubbo入门详细教程

什么是Dubbo&#xff1f; Dubbo 是阿里开源的远程服务调用(RPC)的分布式框架&#xff0c;提供了 SOA 服务治理方案;它的架构主要有五个角色/核心组件&#xff0c;分为是 Container(容器)、Provider(服务的提供方)、Registry(注册中心)、Consumer(服务的消费方)、Monitor(监控中…

dubbo 教程

&#xfeff;&#xfeff; 先给出阿里巴巴dubbo的主页&#xff1a;http://code.alibabatech.com/wiki/display/dubbo/Home-zh 自己的demo下载地址&#xff1a;http://download.csdn.net/detail/u012049463/6763315 1. Dubbo是什么&#xff1f; Dubbo是一个分布式服务框架&…

dubbo使用教程(可直接应用于企业开发)

本dubbo使用教程基于zookeeper-3.4.9搭建&#xff0c;包含服务提供者DubboProvider、和消费者DubboConsumer&#xff0c;可直接在Tomcat上运行。DubboProvider对外开放2个接口&#xff0c;DubboConsumer调用DubboProvider&#xff0c;并对外暴露HTTP服务。DubboProvider还提供了…

Dubbo快速入门

前言&#xff1a;本文需要建立在博主的环境之上来进行&#xff0c;大家也可以用自己的环境测试一下看能不能行得通&#xff0c;如果可以的话请在下方评论&#xff0c;让更多的人知道 Jdk&#xff1a;11 Springboot版本&#xff1a;2.6.6 Dubbo版本&#xff1a;0.2.0&#xf…

dubbo最全的使用教程

dubbo是阿里一款高性能&#xff0c;轻量级的rpc框架&#xff0c;有两大核心功能&#xff1a;远程服务调用和服务治理。本文主要介绍dubbo的运用。 一&#xff0c;安装注册中心zookeeper 1&#xff0c;为什么需要注册中心&#xff0c;不要能不能远程服务调用 答&#xff1a;可以…

VS2017安装教程(详细版)

1.首先下载好安装包 百度网盘下载链接 链接&#xff1a;https://pan.baidu.com/s/1HW8hrLMazRsBkPvkDHkD1Q?pwdz4jg 提取码&#xff1a;z4jg 2.下载到桌面以管理员身份运行 点击继续 3.进入后更改安装位置&#xff0c;选择安装路径&#xff0c;千万不要安装到C盘 4.改完后…

vs2017秘钥

vs2017 企业版秘钥&#xff1a;NJVYC-BMHX2-G77MM-4XJMR-6Q8QF 专业版秘钥&#xff1a;KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章…

自定义 Tabhost 样式

经过了一天的折腾, 在网上也找了不少源码&#xff0c; 但是效果都不是很好&#xff0c;非常长&#xff0c; 最后自己终于写出了一个代码不是很多的Tabhost。 先上图(背景是随便弄的, 所以不怎么样) 首先&#xff0c; 我们要先写一个主xml main.xml 每一个LinearLayout代表…

tabHost 使用方法

近日 学习TabHost的使用 再网上搜不少文章 觉得这篇写的挺好 &#xff01; 出处 &#xff1a;http://www.blogjava.net/freeman1984/archive/2010/10/29/302803.html 查看tabhost的源代码&#xff0c;主要实例变量有&#xff1a; private TabWidget mTabWidget; priv…

android Tabhost控件的使用

Tabhost用来实现如图的效果&#xff1a; 上图的首页、自选、警报是由Tabhost控件来实现的&#xff0c;Tabhost控件中的每个tab其实都是一个Activity&#xff0c;也就是说我创建一个Tabhost&#xff0c;在tabhost中添加tab页就可以实现。 实现方式&#xff1a;1、创建布局文件 …

TabHost详解0

一、TabHost是一个选项卡容器&#xff0c;通过标签页将多个Activity整合到一起。 TabHost的三要素为&#xff1a;TabWidget、FrameLayout、List<TabSpec>。 其主要的使用方式有两种&#xff1a; 1.继承TabActivity&#xff0c;结合对应的xml配置文件导入tab选项内容体 …

TabHost

TabHost的实现有两种方式&#xff0c;第一种继承TabActivity&#xff0c;从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。 mainActivity.xml private TabHost myTabHost;Overridepublic void onCreate(Bundle savedInstanceState) {su…

Android初级控件TabHost

TabHost我们都知道是用来实现导航栏布局来切换页面的&#xff0c;这个也是元老级的控件了&#xff0c;现在逐渐被TabLayout,BottomNavigationBar,使用RadioButton自定义。。。等等给取代了。TabHost有个好处就是它添加的是Activity而不像上面那些全部使用Fragment来显示内容。 …

Android中TabHost嵌套TabHost

在嵌套TabHost时&#xff0c;先后遇到了以下情况&#xff1a; 问题1&#xff1a;内部TabHos无显示&#xff0c;只显示了其中的一个Activity&#xff1b; 解决&#xff1a;按下文比对主子TabHos的布局文件和java文件并修改&#xff1b; 问题2&#xff1a;如上所做后&#xff…

Android的Tab与TabHost讲解

在Android应用中&#xff0c;经常会用到TabHost选项卡,可以方便地在不同页面间切换。之前看过网上的一些教程&#xff0c;但大多都是一个形式&#xff0c;看得迷迷糊糊&#xff0c;不能让人很好的理解和学习。所以&#xff0c;在此详细地列出了Tab与TabHost的使用方法&#xff…