16、SpringBoot------整合MapStruct
开发工具: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的更多相关文章
- SpringBoot学习笔记(16)----SpringBoot整合Swagger2
Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...
- SpringBoot整合Kafka和Storm
前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接 ...
- SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...
- SpringBoot整合Redis及Redis工具类撰写
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...
- SpringBoot整合Mybatis【非注解版】
接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 选择Spring Initializr,配置JDK版本 输入项目名 选择构建web项目所需的state ...
- 补习系列(6)- springboot 整合 shiro 一指禅
目标 了解ApacheShiro是什么,能做什么: 通过QuickStart 代码领会 Shiro的关键概念: 能基于SpringBoot 整合Shiro 实现URL安全访问: 掌握基于注解的方法,以 ...
- SpringBoot整合阿里Druid数据源及Spring-Data-Jpa
SpringBoot整合阿里Druid数据源及Spring-Data-Jpa https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=224 ...
- SpringBoot 整合使用dubbo
这里主要是按照teaey作者的spring-boot-starter-dubbo框架进行一些变化的使用 依赖包: <dependency> <groupId>com.aliba ...
- SpringBoot 整合携程Apollo配置管理中心
携程官网对apollo的使用讲解了很多种方式的使用,但是感觉一些细节还是没讲全,特别是eureka配置中心地址的配置 这里对springboot整合apollo说一下 >SpringBoot启动 ...
- SpringBoot系列十二:SpringBoot整合 Shiro
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Shiro 2.具体内容 Shiro 是现在最为流行的权限认证开发框架,与它起名的只有最初 ...
随机推荐
- leetcode 197. Rising Temperature sql_Date用法
https://leetcode.com/problems/rising-temperature/description/ 题目需要选出今天比昨天气温高的ID 用join,默认是inner join需 ...
- 性能测试工具LoadRunner08-LR之Virtual User Generator 检查点
步骤: 1.点击Vuser--->Run-Time Settings 2.点击Preferences--->Enable Image and text check 3.点击Content ...
- Beam概念学习系列之PCollection数据集
不多说,直接上干货! PCollection数据集 PCollection是Apache Beam中数据的不可变集合,可以是有限的数据集合也可以是无限的数据集合. 有限数据集,这种一般对应的是批处理 ...
- 导出csv文件时韩文乱码解决方法
从asp.net导出csv这样配置可以防止韩文等乱码,在头部加上0xEF, 0xBB, 0xBF: string fileName = "attachment;filename=" ...
- Flutter安装教程
前言 自Flutter beta版发布, 经过几个月的发展, 它已成为了github社区开源项目活跃度的Top50.加上近日Google的Flutter Live 2018全球同步直播宣传,与 Flu ...
- 查看服务器配置信息prtdiag与systeminfo实用命令
UNIX(SUN服务器)bash-2.05# prtdiag -v系统配置: Sun Microsystems sun4u Sun Fire V890系统时钟频率:150 MHz内存大小:3276 ...
- Calendar计算一个月前的日期,踩坑记录
错误示范:calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);//获取一个月前的今天这种写法假设传入的日期为2019-03-3 ...
- CSS的相对定位和绝对定位(position)
什么是定位呢? 定位(position),故名思议,就是确定元素在页面中的位置. CSS的常用定位有两种,一种是相对定位,一种是绝对定位. 下面我们看例子 <html> <head& ...
- php一种面向对象的语言,那么什么是面向对象呢?
php一种面向对象的语言,那么什么是面向对象呢? 传统的面向过程的编程思想: 相信很多人第一次接触编程都是c语言,c语言就是非常典型的面向过程的编程语言,将要实现的功能描述为一个从开始到结束的连续的“ ...
- #include stdio.h(5)
#include <stdio.h> int main() { //1.数组的排序-冒泡排序 /* 1.规则:相邻的两个数据进行比较 2.如果有N个数据,需要选择N-1次参照物来比较, 因 ...