java dto entity,entity与DTO完全一致时
完全一致
指的是entity與DTO之間參數名、參數類型、參數個數全部相同的情況
entity代碼
package com.hxd.simple.domain.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author hxd
*/
public class User implements Serializable {
/**
* 用戶id
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 創建時間
*/
private LocalDateTime createTime;
/**
* 序列化id
*/
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public User() {
}
public User(Integer id, String name, LocalDateTime createTime) {
this.id = id;
this.name = name;
this.createTime = createTime;
}
}
DTO代碼
package com.hxd.simple.domain.dto.response;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author hxd
*/
public class UserDTO implements Serializable {
/**
* 用戶id
*/
private Integer id;
/**
* 用戶名
*/
private String name;
/**
* 創建時間
*/
private LocalDateTime createTime;
/**
* 序列化id
*/
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
}
mapstruct代碼
package com.hxd.simple.domain.mapstruct;
import com.hxd.simple.domain.dto.response.UserDTO;
import com.hxd.simple.domain.entity.User;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface UserMapStruct {
/**
* 實體類轉DTO
* @param user 實體類
* @return DTO對象
*/
UserDTO toResponseDTO(User user);
/**
* 將實體類集合轉換成DTO集合
* @param source 實體類集合
* @return DTO集合
*/
List toResponseListDTO(List source);
}
使用mapstruct實現entity轉DTO
package com.hxd.simple.controller;
import com.hxd.simple.domain.dto.response.UserDTO;
import com.hxd.simple.domain.entity.User;
import com.hxd.simple.domain.mapstruct.UserMapStruct;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserMapStruct userMapStruct;
@GetMapping("/getUser")
public UserDTO getUser() {
User user = new User();
user.setId(1111);
user.setName("張三");
user.setCreateTime(LocalDateTime.now());
return userMapStruct.toResponseDTO(user);
}
@GetMapping("/getUserList")
public List getUserList() {
List userList = new ArrayList<>();
User user1 = new User(1001, "zs", LocalDateTime.now());
User user2 = new User(1002, "ls", LocalDateTime.now());
User user3 = new User(1003, "ww", LocalDateTime.now());
User user4 = new User(1004, "zl", LocalDateTime.now());
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
return userMapStruct.toResponseListDTO(userList);
}
}
使用mapstruct實現entity轉DTO
package com.hxd.simple.controller;
import com.hxd.simple.domain.dto.response.UserDTO;
import com.hxd.simple.domain.entity.User;
import com.hxd.simple.domain.mapstruct.UserMapStruct;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserMapStruct userMapStruct;
@GetMapping("/getUser")
public UserDTO getUser() {
User user = new User();
user.setId(1111);
user.setName("張三");
user.setCreateTime(LocalDateTime.now());
return userMapStruct.toResponseDTO(user);
}
@GetMapping("/getUserList")
public List getUserList() {
List userList = new ArrayList<>();
User user1 = new User(1001, "zs", LocalDateTime.now());
User user2 = new User(1002, "ls", LocalDateTime.now());
User user3 = new User(1003, "ww", LocalDateTime.now());
User user4 = new User(1004, "zl", LocalDateTime.now());
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
return userMapStruct.toResponseListDTO(userList);
}
}
總結:
1.entity與DTO完全一致時,mapstruct接口比較簡單
2.mapstruct的使用與常規的Spring的bean一樣,關鍵是@Mapper注解的componentModel = "spring",此注解會在生成的mapstruct接口的實現類上加@Component注解
3.mapstruct生成的class文件如下:
package com.hxd.simple.domain.mapstruct;
import com.hxd.simple.domain.dto.response.UserDTO;
import com.hxd.simple.domain.entity.User;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.springframework.stereotype.Component;
@Component
public class UserMapStructImpl implements UserMapStruct {
public UserMapStructImpl() {
}
public UserDTO toResponseDTO(User user) {
if (user == null) {
return null;
} else {
UserDTO userDTO = new UserDTO();
userDTO.setId(user.getId());
userDTO.setName(user.getName());
userDTO.setCreateTime(user.getCreateTime());
return userDTO;
}
}
public List toResponseListDTO(List source) {
if (source == null) {
return null;
} else {
List list = new ArrayList(source.size());
Iterator var3 = source.iterator();
while(var3.hasNext()) {
User user = (User)var3.next();
list.add(this.toResponseDTO(user));
}
return list;
}
}
}
4.要想實現List轉List,必須先實現單個entity轉DTO
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java dto entity,entity与DTO完全一致时的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下php可以实现哪些功能,基于
- 下一篇: uctools.php,discuz 论