DTO数据传输对象详解
生活随笔
收集整理的這篇文章主要介紹了
DTO数据传输对象详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、DTO是什么?
- 二、DTO解決的問題
- 三、代碼演示
一、DTO是什么?
DTO (數據傳輸對象)
數據傳輸對象(DTO),是一種設計模式之間傳輸數據的軟件應用系統。數據傳輸目標往往是數據訪問對象從數據庫中檢索數據。數據傳輸對象與數據交互對象或數據訪問對象之間的差異是一個以不具有任何行為除了存儲和檢索的數據(訪問和存取器)。
簡單了說:假設你數據庫中定義了User類,包含用戶名、密碼、郵箱、手機號等等;當用戶登錄時一般只需要輸入用戶名和密碼,那么傳入服務端的用戶名和密碼就可以在controller層封裝到UserDto實體類中
二、DTO解決的問題
DTO解決了在客戶端和服務器端之間傳遞大量數據的問題,但是客戶端往往需要更細粒度的數據訪問
三、代碼演示
@RestController public class AccountController {@Autowiredprivate UserService userService;@Autowiredprivate JwtUtil jwtUtil;@PostMapping("/login") //使用LoginDto接收前端登錄時校驗的用戶名和密碼public Result login(@Validated @RequestBody LoginDto loginDto, HttpServletResponse response) {// User user = userService.getOne(new QueryWrapper<User>().eq("username", loginDto.getUsername())); // Assert.notNull(user,"用戶不存在!"); // if (!user.getPassword().equals(SecureUtil.md5(loginDto.getPassword()))) //{ // return Result.fail("密碼不正確!"); // } // String jwt = jwtUtil.generateToken(user.getId()); // response.setHeader("Authorization",jwt); // response.setHeader("Access-control-Expost-Headers","Authorization"); // return Result.success(MapUtil.builder().put("id",user.getId()));} }LoginDto
@Data public class LoginDto implements Serializable {@NotBlank(message = "用戶名不能為空!")private String username;@NotBlank(message = "密碼不能為空!")private String password; }User類
@Data @EqualsAndHashCode(callSuper = false) @TableName("m_user") public class User implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Long id;@NotBlank(message = "昵稱不能為空~")private String username;private String avatar;@NotBlank(message = "郵箱不能為空~")@Email(message = "郵箱格式不正確~")private String email;private String password;private Integer status;private LocalDateTime created;private LocalDateTime lastLogin;}總結
以上是生活随笔為你收集整理的DTO数据传输对象详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chrome JSON格式化插件
- 下一篇: 模拟FCFS调度算法(先来先服务)没错,