SpringBoot——Dozer的使用[通俗易懂]

SpringBoot——Dozer的使用[通俗易懂]SpringBoot——Dozer的使用

大家好,又见面了,我是你们的朋友全栈君。

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;

    @Autowired
    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://javaforall.net/106458.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全局平均池化层替代全连接层(battering ram)

    转载的文章链接:为什么使用全局平均池化层?关于globalaveragepoolinghttps://blog.csdn.net/qq_23304241/article/details/80292859在卷积神经网络的初期,卷积层通过池化层(一般是最大池化)后总是要一个或n个全连接层,最后在softmax分类。其特征就是全连接层的参数超多,使模型本身变得非常臃肿。之后,有大牛在NIN(NetworkinNetwork)论文中提到了使用全局平局池化层代替全连接层的思路,以下是摘录的一.

    2022年4月17日
    86
  • matlab保存图片函数后突变分辨变化,MATLAB总结 – 图片保存「建议收藏」

    matlab保存图片函数后突变分辨变化,MATLAB总结 – 图片保存「建议收藏」I.Matlab中保存图片的方法1.一种是出来图形窗口后手动保存(这儿又可以分两种):1.1直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式。1.2edit——〉copyfigure,再粘贴到其他程序。2.另一种是用命令直接保存(这里也有两种):2.1用saveas命令保存图片。saveas的三个参数:(1)图形句柄,如果图形窗口标题栏是“Figure3…

    2025年11月3日
    4
  • java 敏感字过滤_Java实现敏感词过滤「建议收藏」

    java 敏感字过滤_Java实现敏感词过滤「建议收藏」系列目录:并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须…

    2022年5月24日
    33
  • idea激活插件破解方法

    idea激活插件破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    123
  • 分析开源项目[通俗易懂]

    分析开源项目[通俗易懂]手把手教你分析开源项目不知道代码怎么来的?代码跑不起来?项目对自己有帮助,不会模块化分析?任何一个开源项目,都可以让自己得到提升!这里以EL-ADMIN为例https://el-admin.vip/1、观察开源项目后端代码:前端代码:2、开源项目下载可使用zip下载,或者Git观察:用了哪些技术(springboot,vue,redis,)是否有数据库(mysql)你的环境是否匹配(Java,Maven,npm,nodejs,)通过了,然后再想办法运行3、跑

    2022年6月11日
    41
  • linux查看jvm堆栈信息_linux查看线程堆栈

    linux查看jvm堆栈信息_linux查看线程堆栈pstack在linux上是一个非常有用的工具,可以查看进程内部调用函数的信息。可惜的是在ubuntu10.10版本中没有找到这个工具。无奈,只能下载尝试编译了。首先安装编译环境,使用如下命令:apt-getinstallbuild-essential#编译所需环境apt-getinstalldpkg-dev#dpkg编译所需环境apt-getbuild-deppstack…

    2025年11月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号