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;
    }



}

搞定!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106458.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • navicat 生成激活码(注册激活)

    (navicat 生成激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • python表情代码_Python实现表情包的代码实例[通俗易懂]

    python表情代码_Python实现表情包的代码实例[通俗易懂]本文主要介绍了使用Python进行简单图像处理的方法以及Python自动生产表情包的实例,具有很好的参考价值,下面跟着小编一起来看下吧作为一个数据分析师,应该信奉一句话——“一图胜千言”。不过这里要说的并不是数据可视化,而是一款全民向的产品形态——表情包!!!!表情包不仅仅是一种符号,更是一种文化——是促进社交乃至社会发展的动力之一,就像懒。我们坚持认为,一张优秀的表情包,应该是一幅艺术品,是那忽…

    2022年10月29日
  • c语言buffer用法_c++ stringbuffer

    c语言buffer用法_c++ stringbufferringbuffer实质上是在一块连续的内存上对数据进行写入和读取,只是在写入和读取的时候有些不同。每次读取的时候都要从开辟空间的地址加上一个读取的偏移量读取,相对应的,写入的时候也要从开辟空间的地址加上一个写入的偏移量来写入。重点也就在读取和写入数据上面。下面从代码上面来说一下。首先定义一个ringbuffer的结构体typedefstruct{uint8_t*buf…

  • c++虚函数详解(你肯定懂了)

    c++虚函数详解(你肯定懂了)转自:c++虚函数 大牛的文章,就是通俗易懂,言简意赅。前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议…

  • 实现数组转对象(reduce)「建议收藏」

    实现数组转对象(reduce)「建议收藏」//数组转对象letarr=[{id:1,name:’张三’},{id:2,name:’李四’},{id:3,name:’王五’}];lettransToObj=function(arr){if(!Array.isArray(arr))throw’参数错误’;returnarr.reduce((pre,cur,index,arr)=>{…

  • Xenu-死链接检测工具「建议收藏」

    Xenu-死链接检测工具「建议收藏」Xenu是一款深受业界好评,并被广泛使用的死链接检测工具。时常检测网站并排除死链接,对网站的 SEO 非常重要,因为大量死链接存在会降低用户和搜索引擎对网站的信任。我们推荐的死链接检测工具Xenu主要具有以下特征:需要下载安装,不到1M大小,用户界面非常简洁,操作简单。检测彻底:能够检测到图片、框架、插件、背景、样式表、脚本和java程序中的链接。报告形式合理多样

发表回复

您的电子邮箱地址不会被公开。

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