zlprime zlprime
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
  • Java
首页 › Java › Dozer的基本使用

Dozer的基本使用

Stone
5月前Java
685 0 0

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 java框架 工具框架
0
本文系作者 @Stone 原创发布在 zlprime。未经许可,禁止转载。
RABC模型
上一篇
集合之Set集合
下一篇
评论 (0)
再想想
聚合文章
JDBC的使用总结
5月前
Centos8中安装RabbitMQ
5月前
集合之Map集合
5月前
Collections集合工具类和可变参数
5月前
相关文章
JDBC的使用总结
Centos8中安装RabbitMQ
集合之Map集合
Collections集合工具类和可变参数
简介

海边微风起,等风也等你

留言板
留言板
小伙伴们
2Broear Libra の 向往 云帆沧海 若志随笔 豆豆 Chuanbo
Copyright © 2017-2023 zlprime. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
热门搜索
  • java
  • spring
Stone
67 文章
139 评论
83 喜欢
  • 0
  • 0
  • Top