iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot如何整合Dozer映射框架
  • 104
分享到

SpringBoot如何整合Dozer映射框架

2023-07-02 16:07:59 104人浏览 薄情痞子
摘要

今天小编给大家分享一下SpringBoot如何整合Dozer映射框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. Do

今天小编给大家分享一下SpringBoot如何整合Dozer映射框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. Dozer 介绍

Dozer 是一个 Java Bean 到 Java Bean 的映射器,它递归地将数据从一个对象复制到另一个对象。Dozer 是用来对两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的调用 set 和 get 方法。

最重要的是,Dozer 可以确保来自数据库的内部域对象不会渗入外部表示层或外部消费者,它还可以将域对象映射到外部 api 调用,反之亦然。

2. 为什么要使用映射框架 Dozer

映射框架在分层架构中作用很大,我们可以通过封装对特定数据对象的更改与将这些对象传播到其他层(即外部服务数据对象、域对象、数据传输对象、内部服务数据对象)来创建抽象层。 映射框架非常适合在负责将数据从一个数据对象映射到另一个数据对象的 Mapper 类型类中使用。

对于分布式系统架构而言,副作用是域对象在不同系统之间的传递。那么,我们不希望内部域对象暴露在外部,也不允许外部域对象渗入我们的系统。

数据对象之间的映射传统上是通过在对象之间复制数据的手动编码值对象组装器(或转换器)来解决的。Dozer 作为一个强大、通用、灵活、可重用和可配置的开源映射框架,节省了开发人员开发某种自定义映射器框架带来的时间成本。

3. Dozer 映射框架的使用

Dozer 的 Maven 坐标:

<dependency>    <groupId>com.GitHub.dozermapper</groupId>    <artifactId>dozer-core</artifactId>    <version>6.5.0</version></dependency>

为了简化使用方式,Dozer 还提供了 starter,其 maven 坐标为:

<dependency>    <groupId>com.github.dozermapper</groupId>    <artifactId>dozer-spring-boot-starter</artifactId>    <version>6.5.0</version></dependency>

下面就开始着手在 springboot 项目中使用 dozer 映射框架。工程的目录结构如下图所示:

SpringBoot如何整合Dozer映射框架

第一步,创建 maven 工程 dozer_demo 并配置 pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="Http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.hzz</groupId>    <artifactId>dozer_demo</artifactId>    <version>1.0-SNAPSHOT</version>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.2.2.RELEASE</version>        <relativePath/>    </parent>    <dependencies>        <dependency>            <groupId>com.github.dozermapper</groupId>            <artifactId>dozer-spring-boot-starter</artifactId>            <version>6.5.0</version>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>    </dependencies></project>

第二步,创建 UserDTO 和 UserEntity

UserDTO 类

package com.hzz.dto;import lombok.Data;@Datapublic class UserDTO {    private String userId;    private String userName;    private int userAge;    private String address;    private String birthday;}

UserEntity 类

package com.hzz.entity;import lombok.Data;import java.util.Date;@Datapublic class UserEntity {    private String id;    private String name;    private int age;    private String address;    private Date birthday;}

第三步,在 resources/dozer/ 目录下创建 dozer 的全局配置文件 global.dozer.xml

<?xml version="1.0" encoding="UTF-8"?><mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xmlns="http://dozermapper.github.io/schema/bean-mapping"          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping                              http://dozermapper.github.io/schema/bean-mapping.xsd">    <!--全局配置:<date-fORMat>表示日期格式-->    <configuration>        <date-format>yyyy-MM-dd</date-format>    </configuration></mappings>

第四步,在 resources/dozer/ 目录下创建 dozer 的映射文件 biz.dozer.xml

<?xml version="1.0" encoding="UTF-8"?><mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xmlns="http://dozermapper.github.io/schema/bean-mapping"          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping                             http://dozermapper.github.io/schema/bean-mapping.xsd">    <!--描述两个类中属性的对应关系,对于两个类中同名的属性可以不映射-->    <mapping date-format="yyyy-MM-dd">        <class-a>com.hzz.entity.UserEntity</class-a>        <class-b>com.hzz.dto.UserDTO</class-b>        <field>            <a>id</a>            <b>userId</b>        </field>        <field>            <a>name</a>            <b>userName</b>        </field>        <field>            <a>age</a>            <b>userAge</b>        </field>    </mapping>    <!--    可以使用 map-id 指定映射的标识,在程序中通过此标识来确定使用当前这个映射关系    -->    <mapping date-format="yyyy-MM-dd" map-id="user">        <class-a>com.hzz.entity.UserEntity</class-a>        <class-b>com.hzz.dto.UserDTO</class-b>        <field>            <a>id</a>            <b>userId</b>        </field>        <field>            <a>name</a>            <b>userName</b>        </field>        <field>            <a>age</a>            <b>userAge</b>        </field>    </mapping></mappings>

第五步,编写 application.yml 文件

dozer:
  mappingFiles:
    - classpath:dozer/global.dozer.xml
    - classpath:dozer/biz.dozer.xml

第六步,创建主启动类 DozerApp

package com.hzz;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DozerApp {    public static void main(String[] args) {        SpringApplication.run(DozerApp.class, args);    }}

第七步,编写单元测试 DozerTest

package com.hzz;import com.github.dozermapper.core.Mapper;import com.hzz.dto.UserDTO;import com.hzz.entity.UserEntity;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTest(classes = DozerApp.class)public class DozerTest {    @Autowired    private Mapper mapper;    @Test    public void testDozer() {        UserDTO userDTO = new UserDTO();        userDTO.setUserId("100");        userDTO.setUserName("ls");        userDTO.setUserAge(2);        userDTO.setAddress("bj");        userDTO.setBirthday("2020-07-04");        UserEntity user = mapper.map(userDTO, UserEntity.class);        System.out.println(user);    }    @Test    public void testDozer2(){        UserDTO userDTO = new UserDTO();        userDTO.setUserId("100");        userDTO.setUserName("ls");        userDTO.setUserAge(5);        userDTO.setAddress("bj");        userDTO.setBirthday("2017-07-04");        UserEntity user = new UserEntity();        user.setId("200");        System.out.println(user);        mapper.map(userDTO, user);        System.out.println(user); //被 userDTO 覆盖了    }    @Test    public void testDozer3(){        UserDTO userDTO = new UserDTO();        userDTO.setUserId("100");        userDTO.setUserName("zs");        userDTO.setUserAge(3);        userDTO.setAddress("bj");        UserEntity user = new UserEntity();        System.out.println(user);        mapper.map(userDTO,user,"user"); //指定映射ID为user        System.out.println(user);    }}

以上就是“SpringBoot如何整合Dozer映射框架”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: SpringBoot如何整合Dozer映射框架

本文链接: https://www.lsjlt.com/news/342816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot如何整合Dozer映射框架
    今天小编给大家分享一下SpringBoot如何整合Dozer映射框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. Do...
    99+
    2023-07-02
  • SpringBoot整合Dozer映射框架流程详解
    目录1. Dozer 介绍2. 为什么要使用映射框架 Dozer3. Dozer 映射框架的使用1. Dozer 介绍 Dozer 是一个 Java Bean 到 Java Bean...
    99+
    2024-04-02
  • SpringBoot框架如何整合SwaggerUI
    这篇文章主要介绍了SpringBoot框架如何整合SwaggerUI的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot框架如何整合SwaggerUI文章都会有所收获,下面我们一起来看看吧。整合s...
    99+
    2023-06-29
  • Springboot如何整合Dozer实现深度复制
    这篇文章将为大家详细讲解有关Springboot如何整合Dozer实现深度复制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DozerDozer是一种Java Bean到Java Bean的映射器,递归地...
    99+
    2023-06-29
  • springboot框架中如何整合mybatis框架思路详解
    目录springboot框架中如何整合mybatis框架 一、在pom.xml 文件引入对应依赖二、写配置springboot框架中如何整合mybatis框架 思路: 1....
    99+
    2022-12-20
    springboot整合mybatis框架 springboot整合mybatis
  • SpringBoot整合Mybatis LocalDateTime 映射失效的解决
    目录SpringBoot整合Mybatis LocalDateTime映射失效一、概述二、具体原因三、解决办法四、小结一下使用LocalDateTime报错问题解决方法SpringB...
    99+
    2024-04-02
  • SpringBoot怎么整合JPA框架
    这篇文章主要介绍了SpringBoot怎么整合JPA框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么整合JPA框架文章都会有所收获,下面我们一起来看看吧。一. Spring Boot数...
    99+
    2023-07-04
  • 如何用Springboot快速整合shiro安全框架
    咱们先来普及一下什么是shiro,shiro原名Apache Shiro 是一个Java 的安全(权限)框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE...
    99+
    2023-05-14
    Java Springboot整合shiro安全框架 Springboot整合shiro安全框架 快速整合shiro框架
  • springboot创建的web项目如何整合Quartz框架
    这篇“springboot创建的web项目如何整合Quartz框架”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“spring...
    99+
    2023-07-02
  • SpringBoot整合Mybatis LocalDateTime 映射失效的解决方法
    今天就跟大家聊聊有关SpringBoot整合Mybatis LocalDateTime 映射失效的解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Sprin...
    99+
    2023-06-29
  • springboot整合flowable框架入门步骤
    最近工作中有用到工作流的开发,引入了flowable工作流框架,在此记录一下springboot整合flowable工作流框架的过程,以便后续再次使用到时可以做一些参考使用,如果项目...
    99+
    2024-04-02
  • SpringBoot框架整合Mybatis简单攻略
    目录步骤 1 添加mybatis-starter依赖步骤 2 如何配置mybatis到SpringBoot项目步骤 3 测试查询步骤 4 mybatis注解方式步骤 5 用注解方式做...
    99+
    2024-04-02
  • Spring mvc如何整合tiles框架
    小编给大家分享一下Spring mvc如何整合tiles框架,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先贴上源码:1、tiles依赖的jar包: maven代...
    99+
    2023-05-30
    springmvc
  • 如何配置ABP框架使用对象映射
    小编给大家分享一下如何配置ABP框架使用对象映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!DTO和实体实体实体是领域驱动设计(Domain Driven De...
    99+
    2023-06-29
  • springboot整合netty框架实现站内信
    目录代码用到的组件介绍websocket连接过程代码用到的组件介绍 ChannelInitializer 见名知意,就是channel 初始化器,当每个客户端创建连接时这里面的代码都...
    99+
    2022-12-23
    springboot站内信 springboot netty站内消息通知
  • springboot整合netty框架的方式小结
    目录方式一:注解@PostConstruct方式二:利用监听器启动:方式三 :利用ApplicationListener 上下文监听器方式四:commiandLinerunner启动...
    99+
    2024-04-02
  • SpringBoot框架整合SwaggerUI的示例代码
    整合swagger进行模块测试 注意事项:为方便SpringBoot更好的整合Swagger,需要专门放置在一个模块中(maven子工程) 创建公共模块,整合swagger,为了所有...
    99+
    2024-04-02
  • 如何对SSM框架进行整合
    今天就跟大家聊聊有关如何对SSM框架进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不...
    99+
    2023-05-31
    ssm
  • SpringBoot整合JPA框架实现过程讲解
    目录一. Spring Boot数据访问概述二. Spring Data JPA简介2.1 编写ORM实体类2.2 编写Repository接口2.2.1 继承XXRepositor...
    99+
    2022-12-21
    SpringBoot整合JPA SpringBoot JPA框架
  • springboot整合netty框架的方式有哪些
    本篇内容主要讲解“springboot整合netty框架的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot整合netty框架的方式有哪些”吧!netty作为一个高性能...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作