• 首页
  • 朝花夕拾
    • 摄影
    • 随笔
  • 编程学习
    • Java
  • 其它
    • 友情链接
    • 留言板
  • 0
  • 0

Dozer的基本使用

Stone
1年前

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 原创发布在 。未经许可,禁止转载。
RABC模型
上一篇
集合之Set集合
下一篇

评论 (0)

再想想
暂无评论

Stone

76
文章
148
评论
87
喜欢

聚合文章

Jenkins启动时报Start request repeated too quickly错误
配置Jmeter的Perfmon插件
Rocky Linux中设置盒盖不休眠
为JMeter安装插件

标签

Excel (1) java (29) java框架 (7) jenkins (5) jmeter (3) linux (9) lombok (1) mybatis plus (2) mysql (2) redis (2) spring (8) ssm (7) vue (1) wordpress (5) 工具框架 (1) 每日一学 (2) 生活 (3) 航拍 (1) 视频 (1) 读书 (1)

最近评论

还是孩子妈呢
—— Stone4天前摘草莓2
所以当年的女朋友==今年的老婆吗?🤓
—— 若志奕鑫1周前摘草莓2
已改
—— Stone2月前留言板

猜你喜欢

配置Jmeter的Perfmon插件

4月前
153 0 0

为JMeter安装插件

4月前
155 0 0

Mac中安装并启动Jmeter

4月前
152 0 0

Nacos修改服务权重时报errCode: 500

9月前
732 0 0

简介

海边微风起,等风也等你

留言板

留言板

小伙伴们

2Broear Libra の 向往 乙末博客 若志随笔 豆豆 Chuanbo 诗意笔记
Copyright © 2017-2023 . Designed by nicetheme. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 摄影
    • 随笔
  • 编程学习
    • Java
  • 其它
    • 友情链接
    • 留言板

搜索

  • java
  • spring

Stone

76
文章
148
评论
87
喜欢