心耘博客 | ZLPRIME-磊落平生志,破浪去乘风 心耘博客 | ZLPRIME-磊落平生志,破浪去乘风
  • 首页
  • 朝花夕拾
    • 光影记录
    • 生活随笔
  • 代码如诗
    • 100 Days of SwiftUI
    • 后端技术
    • 服务器配置
  • 影集
  • 关于我
  • 更多
    • 专题汇总
    • 友情链接
    • 留言板
  • 0
  • 0

Dozer的基本使用

心耘
3 年前

Dozer是java Bean到Java Bean的映射器,它以递归方式将数据从一个对象复制到另一个对象。使用这个工具可以将一个对象的所有属性值转给另一个对象,而不需要再重复调用set和get方法

Dozer的使用(Spring Boot)

1.首先要引入Dozer的坐标

   <!--引入dozer的starter坐标-->
   <dependency>
         <groupId>com.github.dozermapper</groupId>
         <artifactId>dozer-spring-boot-starter</artifactId>
         <version>6.5.0</version>
   </dependency>

2.让后创建两个用于测试的实体类,UserEntiy和UserDTO。这两个实体类中的大部分属性是完全一致的,但有个别属性不同。

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
    private String name;
    private int age;
    private String addr;
    private Date birthday;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserEntity {
    private String name;
    private int age;
    private String address;
    private String birthday;
}

3.创建dozer的全局配置文件:dozerConfig.xml 。这个文件的目录位置可以随意设置,我放在了resources目录下:

<?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>

4.配置dozer的映射文件,即配置UserEntity类和UserDto类之间属性的映射关系。只有配置了这个文件,dozer才知道UserEntity中的address映射到UserDto中的addr属性上等。两个类中,属性名相同的属性可以不配置映射关系,可以自动映射。我将这个文件命名为dozerMapper.xml也放在了resources目录下

<?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">
    <!--描述两个类中属性的对应关系,对于两个类中同名的属性可以不映射-->
    <!--map-id指定映射标识,即给这个映射关系设置了一个ID。后面可以通过这个ID来确定使用这个映射关系-->
    <mapping date-format="yyyy-MM-dd" map-id="user">
        <class-a>com.hrm.dozer.UserDto</class-a>
        <class-b>com.hrm.dozer.UserEntity</class-b>
        <field>
            <!--表示UserDto中的addr映射到UserEntity中的address-->
            <a>addr</a>  
            <b>address</b>
        </field>
    </mapping>
</mappings>

5.在spring boot配置文件中,配置dozer的全局配置文件和映射配置文件。让spring知道dozer的相关配置文件在哪里。

dozer:
  mapping-files:
    - classpath:dozerConfig.xml
    - classpath:dozerMapper.xml

6.编写测试方法进行测试

    @Autowired
    private Mapper mapper; //使用mapper对象可以完成两个对象之间的属性复制

    @Test
    public void testDozer(){
               /*
        *  先创建一个UserEntity对象
        * */
        UserEntity user = new UserEntity("UserDto",18,"HF","2022-08-28");
        /*
        * 使用mapper的map方法,
        * 第一个参数是被映射的对象
        * 第二个参数是需要被映射到的对象
        * 第三个参数是映射配置文件中的map-id,表示使用map-id对应的映射关系进行映射
        * 返回值是 被映射到的对象
        * */
        UserDto map = mapper.map(user, UserDto.class,"user");
        System.out.println(map);
    }
  • 如果被映射到的对象本身就存在一些属性值,那么映射后这些值将被覆盖
java
0
RABC模型
上一篇
Centos8中安装RabbitMQ
下一篇

评论 (0)

再想想
暂无评论

心耘

73
文章
167
评论
94
喜欢

标签

centos (13) java (22) jenkins (7) linux (12) lombok (1) maven (1) mysql (3) redis (2) rocky linux (3) spring (8) wordpress (5) 发布 (3) 实用技巧 (7) 教程 (6) 服务器配置 (3) 生活 (5) 部署 (2)

聚合文章

生活杂记(一)
家电选购小结-空调
十一带娃心得
通过War包升级Jenkins版本

专题推荐

7

Jenkins合集

12

服务器配置

猜你喜欢

通过War包升级Jenkins版本

通过War包升级Jenkins版本

1 年前
431 0 0
配置Jmeter的Perfmon插件

配置Jmeter的Perfmon插件

2 年前
559 0 0
为JMeter安装插件

为JMeter安装插件

2 年前
559 0 0
Mac中安装并启动Jmeter

Mac中安装并启动Jmeter

2 年前
732 0 2

简介

海边微风起,等风也等你

留言板

留言板

小伙伴们

2Broear 乙末博客 若志随笔 豆豆 诗意笔记 元のDiary
Copyright © 2017-2025 心耘博客 | ZLPRIME-磊落平生志,破浪去乘风. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 光影记录
    • 生活随笔
  • 代码如诗
    • 100 Days of SwiftUI
    • 后端技术
    • 服务器配置
  • 影集
  • 关于我
  • 更多
    • 专题汇总
    • 友情链接
    • 留言板

搜索

  • java
  • spring

心耘

73
文章
167
评论
94
喜欢