zoukankan      html  css  js  c++  java
  • 16、SpringBoot------整合MapStruct

    开发工具:STS

    前言:

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

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

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

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

    实例:

    1.导入依赖:

     1                 <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8 -->
     2         <dependency>
     3             <groupId>org.mapstruct</groupId>
     4             <artifactId>mapstruct-jdk8</artifactId>
     5             <version>1.0.0.Final</version>
     6         </dependency>
     7         <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor -->
     8         <dependency>
     9             <groupId>org.mapstruct</groupId>
    10             <artifactId>mapstruct-processor</artifactId>
    11             <version>1.0.0.Final</version>
    12         </dependency>        

    2.添加po

     1 package com.xm.timeHotel.pojo;
     2 
     3 import lombok.Data;
     4 
     5 @Data
     6 public class User {
     7     
     8     private String username;
     9     private String password;
    10     private String iconUrl;
    11 
    12 }

    3.添加vo

     1 package com.xm.timeHotel.controller.dto;
     2 
     3 import lombok.Data;
     4 
     5 @Data
     6 public class UserDto {
     7     
     8     private String username;
     9     private String iconUrl;
    10 
    11 }

     

    4.添加mapper接口

     1 package com.xm.timeHotel.controller.dto;
     2 
     3 import org.mapstruct.Mapper;
     4 import org.mapstruct.factory.Mappers;
     5 
     6 import com.xm.timeHotel.pojo.User;
     7 
     8 @Mapper(componentModel="spring")
     9 public interface UserDtoMapper {
    10     
    11     
    12     public User dtoToUser(UserDto userDto) ;
    13     public UserDto userToDto(User user);
    14 
    15 }

    5.添加controller

     1 package com.xm.timeHotel.controller;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.web.bind.annotation.GetMapping;
     5 import org.springframework.web.bind.annotation.PathVariable;
     6 import org.springframework.web.bind.annotation.PostMapping;
     7 import org.springframework.web.bind.annotation.RequestBody;
     8 import org.springframework.web.bind.annotation.RestController;
     9 
    10 import com.xm.timeHotel.controller.dto.UserDtoMapper;
    11 import com.xm.timeHotel.controller.dto.UserDto;
    12 import com.xm.timeHotel.pojo.User;
    13 
    14 @RestController("/user")
    15 public class UserController {
    16     
    17     @Autowired
    18     private UserDtoMapper userDtoMapper;
    19     
    20     
    21     @PostMapping("/userDto")
    22     public void getUser(UserDto userDto) {
    23         User user = userDtoMapper.dtoToUser(userDto);
    24         System.out.println(user);
    25     }
    26     
    27     @PostMapping("/user")
    28     public void getUserDto(User user) {
    29         UserDto userDto = userDtoMapper.userToDto(user);
    30         System.out.println(user);
    31     }
    32 
    33 }

     

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

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

    最后发现:

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

  • 相关阅读:
    自动以管理员身份运行批处理(bat)文件
    apache+php完美解决301重定向的两种方法
    Apache限制访问某目录或某文件,限制允许指定IP
    Apache 禁用IP 访问 和 HTTP 跳转 HTTPS
    301重定向代码合集(iis,asp,php,asp.net,apache)
    以太坊中的gas、gas price、gas limit到底是什么
    解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
    linux/kde下chrome浏览器缺失最小化,最大化按钮的解决方案
    python自动化--语言基础三字典、函数、全局/局部变量
    python自动化--语言基础二运算符、格式化输出、条件语句、循环语句、列表、元组
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/springboot16.html
Copyright © 2011-2022 走看看