开发工具:STS

前言:

  前端提交往后端的数据,一部分是不需要存入数据库当中的;

  后端从数据库中取出的数据,一部分是不可以交给用户的;

  那么,po面向的是DB,vo面向的是客户端,

  mapstruct就提供了vo与po自动转换的一种方式。

实例:

1.导入依赖:

                 <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.0.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.0.0.Final</version>
</dependency>

2.添加po

 package com.xm.timeHotel.pojo;

 import lombok.Data;

 @Data
public class User { private String username;
private String password;
private String iconUrl; }

3.添加vo

 package com.xm.timeHotel.controller.dto;

 import lombok.Data;

 @Data
public class UserDto { private String username;
private String iconUrl; }

4.添加mapper接口

 package com.xm.timeHotel.controller.dto;

 import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import com.xm.timeHotel.pojo.User; @Mapper(componentModel="spring")
public interface UserDtoMapper { public User dtoToUser(UserDto userDto) ;
public UserDto userToDto(User user); }

5.添加controller

 package com.xm.timeHotel.controller;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import com.xm.timeHotel.controller.dto.UserDtoMapper;
import com.xm.timeHotel.controller.dto.UserDto;
import com.xm.timeHotel.pojo.User; @RestController("/user")
public class UserController { @Autowired
private UserDtoMapper userDtoMapper; @PostMapping("/userDto")
public void getUser(UserDto userDto) {
User user = userDtoMapper.dtoToUser(userDto);
System.out.println(user);
} @PostMapping("/user")
public void getUserDto(User user) {
UserDto userDto = userDtoMapper.userToDto(user);
System.out.println(user);
} }

6.eclipse生成不了mapper接口实现类的解决方案:

我直接运行项目的时候,发现一直未找到UserDtoMapper实例,从网上查找了好多种方案,都不能生效。

最后发现:

运行mvn clean项目,再mvn install项目,就生成实现类了。

16、SpringBoot------整合MapStruct的更多相关文章

  1. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  2. SpringBoot整合Kafka和Storm

    前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接 ...

  3. SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)

    前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...

  4. SpringBoot整合Redis及Redis工具类撰写

            SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...

  5. SpringBoot整合Mybatis【非注解版】

    接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 ​ 选择Spring Initializr,配置JDK版本 ​ 输入项目名 ​ 选择构建web项目所需的state ...

  6. 补习系列(6)- springboot 整合 shiro 一指禅

    目标 了解ApacheShiro是什么,能做什么: 通过QuickStart 代码领会 Shiro的关键概念: 能基于SpringBoot 整合Shiro 实现URL安全访问: 掌握基于注解的方法,以 ...

  7. SpringBoot整合阿里Druid数据源及Spring-Data-Jpa

    SpringBoot整合阿里Druid数据源及Spring-Data-Jpa https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=224 ...

  8. SpringBoot 整合使用dubbo

    这里主要是按照teaey作者的spring-boot-starter-dubbo框架进行一些变化的使用 依赖包: <dependency> <groupId>com.aliba ...

  9. SpringBoot 整合携程Apollo配置管理中心

    携程官网对apollo的使用讲解了很多种方式的使用,但是感觉一些细节还是没讲全,特别是eureka配置中心地址的配置 这里对springboot整合apollo说一下 >SpringBoot启动 ...

  10. SpringBoot系列十二:SpringBoot整合 Shiro

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Shiro 2.具体内容 Shiro 是现在最为流行的权限认证开发框架,与它起名的只有最初 ...

随机推荐

  1. Barty's Computer 字典树

    https://nanti.jisuanke.com/t/17122 Barty have a computer, it can do these two things. Add a new stri ...

  2. python-常用模块整理

    学习背景 最近需要进行文件夹数据的批量读取,里面会用到python里面的os模块.但是对os模块又不是很熟悉,里面的函数有哪些函数?有什么用?怎么用?英语不好的每次看官方文档也比较费力,所以就想着看看 ...

  3. [转]Loading, Editing, and Saving a Text File in HTML5 Using Javascript

    本文转自:http://thiscouldbebetter.wordpress.com/2012/12/18/loading-editing-and-saving-a-text-file-in-htm ...

  4. Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器

    一.ftp的安装 装个ftp搞了一下午,感觉以前没那么麻烦的呀,结果到晚上才发现是实验室网的问题,换连手机的热点马上可以了,真是尴尬,把基本安装步骤记录一下: 1.检查安装vsftpd软件 使用如下命 ...

  5. maven 如何将自己的jar包添加到本地仓库

    1 准备一个需要添加到本地仓库的jar包 我这里准备了一个名为mail.jar 的jar包,放到E:\Install Files目录下面 2 下面演示如何将准备的jar包添加到本地仓库 1 语法 mv ...

  6. go语言初始化内部结构体3中方式

    package main import ( "fmt" ) type User struct { Id int Name string Age int } type Manger ...

  7. opensuse13.2安装 sass和compass

    首先要先安装ruby 和 gem如果使用sudo zypper install ruby 安装后 当安装sass时会报错 /System/Library/Frameworks/Ruby.framewo ...

  8. Python四大神兽(迭代器&生成器&闭包&装饰器)

    一.迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不 ...

  9. 【补充】docker基础学习

    docker 基础知识 之前写了一篇docker未授权访问的文章,现在来补充一下docker基础知识,以便更好的学习docker上的漏洞. docker是一款轻量级的虚拟化的产品,它属于层级化的架构. ...

  10. 语文,数学,ps

    数学教2课以集合为主. 集合:是指具有某种特定性质的具体的或抽象的对象汇总成的集体,这些对象称为该集合的元素. 特点:确定性给定一个集合,哪些对象是这个集合元素,不允有模棱两可的情况.互用性任何两个元 ...