SpringBoot中Dozer的使用小结
作者:月月._. 时间:2023-11-25 01:24:38
什么是Dozer?
Dozer是一种Java Bean到Java Bean的映射器,递归地将数据从一个对象复制到另一个对象,它是一个强大的,通用的,灵活的,可重用的和可配置的开源映射框架。
说白点就是dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样。
dozer是用来两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的set和get方法了。
下面我们来学习一下dozer的使用
1.添加依赖
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.5.1</version>
</dependency>
2.创建配置类
package com.youyou.util.utils;
import org.dozer.DozerBeanMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
import java.util.List;
/**
* 各个模块的dozer配置文件
*/
@Configuration
public class DozerConfig {
@Bean(name = "org.dozer.Mapper")
public DozerBeanMapper dozer() {
//这里是配置文件的路径
List<String> mappingFiles = Arrays.asList("dozer/dozer-mapping.xml");
DozerBeanMapper dozerBean = new DozerBeanMapper();
dozerBean.setMappingFiles(mappingFiles);
return dozerBean;
}
}
3.创建两个POJO
创建DO
package com.youyou.address.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.youyou.base.BaseEntity;
import lombok.Data;
/**
* 数据库实体,联系人
*/
@Data
@TableName("TS_Contacter")
public class ContacterDO extends BaseEntity {
/**
* 姓名
*/
private String name;
* 性别(0,女;1,男)
private String sex;
* 年龄
private Integer age ;
* 电话
private String phone;
* 地址
private String location;
* 删除(0,未删除;1,删除)
private String dflag ;
}
DO的父类
package com.youyou.base;
import lombok.Data;
import java.util.Date;
/**
* 所有实体类的父类
*
* @author 刘朋
* <br/>date 2018-11-02
*/
@Data
public abstract class BaseEntity {
/**
* 主键
*/
private String id;
* 创建时间
private Date createTime;
}
创建VO
package com.youyou.address.vo;
import lombok.Data;
/**
* 联系人vo
*
* @author 刘朋
* <br/>date 2018-11-05
*/
@Data
public class ContacterVO {
/**
* 姓名
*/
private String name;
* 性别(0,女;1,男)
private String sex;
* 年龄
private Integer age ;
* 电话
private String phone;
* 地址
private String location;
}
4.创建XML文件
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">
<!--如果两个类需要装换的属性名相同则不需要写这个mapping-->
<mapping>
<class-a>com.youyou.address.entity.ContacterDO</class-a>
<class-b>com.youyou.address.vo.ContacterVO</class-b>
</mapping>
</mappings>
5.使用
package com.youyou.address.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youyou.address.entity.ContacterDO;
import com.youyou.address.service.ContacterService;
import com.youyou.address.vo.ContacterVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.dozer.DozerBeanMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(description = "联系人接口")
@RestController
@RequestMapping(value = "/contacter")
public class ContacterController {
@Autowired
private ContacterService service;
private DozerBeanMapper dozerBeanMapper ;
@ApiOperation(value = "新增")
@GetMapping("/add")
public ContacterVO add(ContacterVO contacterVO) {
System.out.println("添加一个联系人");
//使用dozer进行转换
ContacterDO contacterDO = dozerBeanMapper.map(contacterVO, ContacterDO.class);
service.insertAutoKey(contacterDO);
return contacterVO;
}
}
搞定!
来源:https://blog.csdn.net/lp840312696/article/details/83748979
标签:SpringBoot,Dozer,使用
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SpringBoot Profile多环境配置方式
2023-12-14 01:44:24
![](https://img.aspxhome.com/file/2023/8/60898_0s.png)
深入理解spring boot 监控
2023-11-04 02:25:15
![](https://img.aspxhome.com/file/2023/0/67490_0s.png)
Java中static关键字的作用和用法详细介绍
2022-07-05 08:33:53
JAVA版排序算法之快速排序示例
2023-04-20 04:37:53
Java设计模式之工厂模式案例详解
2023-11-27 20:08:03
![](https://img.aspxhome.com/file/2023/2/60342_0s.png)
实例代码讲解JAVA 观察者模式
2023-09-11 19:22:18
![](https://img.aspxhome.com/file/2023/9/83139_0s.jpg)
Java实现两人五子棋游戏(五) 判断是否有一方胜出
2022-03-03 18:29:44
![](https://img.aspxhome.com/file/2023/5/64955_0s.jpg)
Unity UI或3D场景实现跟随手机陀螺仪的晃动效果
2021-12-09 01:09:32
![](https://img.aspxhome.com/file/2023/5/78165_0s.jpg)
Mybatis接口式编程的原理
2023-11-27 22:16:05
Android使用ViewPager加载图片和轮播视频
2023-10-26 08:20:04
![](https://img.aspxhome.com/file/2023/8/119098_0s.png)
3种C# 加载Word的方法
2021-06-05 21:06:41
![](https://img.aspxhome.com/file/2023/2/84482_0s.png)
SpringBoot预加载与懒加载实现方法超详细讲解
2021-08-31 11:39:13
Java HashMap底层实现原理
2023-10-31 19:55:34
![](https://img.aspxhome.com/file/2023/7/79237_0s.webp)
C#开发WinForm清空DataGridView控件绑定的数据
2022-12-01 11:22:08
![](https://img.aspxhome.com/file/2023/7/91327_0s.jpg)
c#使用反射调用类型成员示例
2023-02-27 08:54:43
Spingboot JPA CriteriaBuilder 如何获取指定字段
2022-07-20 15:40:22
SpringBoot在IDEA中实现热部署的步骤
2022-01-14 23:30:02
![](https://img.aspxhome.com/file/2023/8/78008_0s.png)
Android 更新RecyclerView的好方法
2023-11-24 09:39:59
如何在C# 枚举中增加行为
2022-10-28 06:11:34
Java将对象保存到文件中/从文件中读取对象的方法
2022-06-18 21:26:42