SpringBoot——Dozer实现对象转换

1 导入依赖

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

2 DozerUtil对象转换工具类

/**
 * @author lyf
 * @description
 * @create 2022-06-08 20:47
 * dozer 对象工具类
 **/
 @Componet
public class DozerUtil {

    //dozer-spring-boot-stater中注入的对象
    @Autowired
    private Mapper mapper;

    public DozerUtil (Mapper mapper){
        this.mapper=mapper;
    }


    //单个对象转换
    public <T> T map(Object source,Class<T> destination){
        return mapper.map(source,destination);
    }


    //List 对象转换
    public <T> List<T>  mapList(List<Object> sourceList,Class<T>destination){
        if(sourceList==null||destination==null){
            return null;
        }else{
            //遍历转换
            List<T> list=new ArrayList<>();
            for(Object o:sourceList){
                T obj=map(o,destination);
                list.add(obj);
            }
            return list;
        }
    }
}

3 Dozer对象转换配置文件

对象的转换离不开属性与属性间的映射关系。包括不同属性名,同属性名不同属性的类别的之间对象的转换关系。该转换关系离不开dozer的配置xml文件。

该文件通常放在resourses 文件夹下,例如新建dozer-mapper.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">
    <!--描述两个类中属性的对应关系,对于两个类中同名的属性可以不映射-->
    <!-- <class-a>与<class-b> 中描述的对象的限定类名 -->
    <mapping date-format="yyyy-MM-dd"> 
        <class-a>对象a</class-a>
        <class-b>对象b</class-b>
        <field>
            <a>属性1</a>
            <b>属性1</b>
        </field>
        <field>
            <a>属性2</a>
            <b>属性2</b>
        </field>
        <field>
            <a>属性3</a>
            <b>属性3</b>
        </field>
    </mapping>
</mappings>

4 配置DozerProperties

dozer:
  mappingFiles:
    - classpath: dozer-mapper.xml
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的使用Dozer转换对象列表的示例代码: ```java import org.dozer.DozerBeanMapper; import org.dozer.Mapper; import java.util.ArrayList; import java.util.List; public class DozerExample { public static void main(String[] args) { List<SourceObject> sourceList = new ArrayList<>(); sourceList.add(new SourceObject("John", "Doe")); sourceList.add(new SourceObject("Jane", "Doe")); Mapper mapper = new DozerBeanMapper(); List<DestinationObject> destList = new ArrayList<>(); for (SourceObject source : sourceList) { DestinationObject dest = mapper.map(source, DestinationObject.class); destList.add(dest); } System.out.println(destList); } } class SourceObject { private String firstName; private String lastName; public SourceObject(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "SourceObject{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}'; } } class DestinationObject { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "DestinationObject{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}'; } } ``` 这段代码创建了两个Java类,SourceObject 和 DestinationObject,然后使用DozerBeanMapper将来源对象列表转换为目标对象列表。请注意,Dozer会自动将对象属性名称匹配,并使用Java Bean规范自动设置属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值