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項目,就生成實現類了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM