DTO数据传输对象详解
文章目录
一、DTO是什么?
DTO (数据传输对象)
数据传输对象(DTO),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。
简单了说:假设你数据库中定义了User类,包含用户名、密码、邮箱、手机号等等;当用户登录时一般只需要输入用户名和密码,那么传入服务端的用户名和密码就可以在controller层封装到UserDto实体类中
二、DTO解决的问题
DTO解决了在客户端和服务器端之间传递大量数据的问题,但是客户端往往需要更细粒度的数据访问
三、代码演示
@RestController
public class AccountController {
    @Autowired
    private UserService userService;
    @Autowired
    private 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数据传输对象详解的更多相关文章
- JavaScript进阶知识点——函数和对象详解
		
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
 - jQuery的deferred对象详解
		
jQuery的deferred对象详解请猛击下面的链接 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...
 - Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697
		
详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...
 - jQuery的deferred对象详解(转载)
		
本文转载自: jQuery的deferred对象详解(转载)
 - mvc-servlet---ServletConfig与ServletContext对象详解(转载)
		
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
 - JS中的event 对象详解
		
JS中的event 对象详解 JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...
 - JavaWeb学习----JSP内置对象详解
		
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
 - django中request对象详解(转载)
		
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
 - (转)javascript中event对象详解
		
原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解 博客分类: javaScript JavaScriptCS ...
 
随机推荐
- vue+echarts可视化大屏,全国地图下钻,页面自适应
			
之前写过一篇关于数据大屏及地图下钻的文章 https://www.cnblogs.com/weijiutao/p/13977011.html ,但是存在诸多问题,如地图边界线及行政区划老旧,无法自适应 ...
 - sklearn.preprocessing.LabelEncoder_标准化标签,将标签值统一转换成range(标签值个数-1)范围内
			
. LabelEncode(),标签值编码用在将一些类别型的列进行编码,方便用于训练
 - Android 12(S) 图形显示系统 - 初识ANativeWindow/Surface/SurfaceControl(七)
			
题外话 "行百里者半九十",是说步行一百里路,走过九十里,只能算是走了一半.因为步行越接近目的地,走起来越困难.借指凡事到了接近成功,往往是最吃力.最艰难的时段.劝人做事贵在坚持, ...
 - LGP3813题解
			
这道题是我去年11月份的时候看到的,当时写了一个假的做法没过样例,然后就没管了. 结果今天在模拟赛的时候放到了 T1( 我也不知道他为什么是对的,可是他就是过了样例和大样例.jpg 容易发现 \(n\ ...
 - LGP7890题解
			
前置芝士的光速幂技巧. 本题解不是正解,和正解唯一的差别在于对幂的处理. 我们能够发现有: \[F(n,m,k)=\frac 1 n \binom {n+m-1} m \] 证明见这里. 然后我们开始 ...
 - 从MyIE2平滑升级到Maxthon的完美方案
			
经过几个Beta版本的测试MyIE2改名为Maxthon的新版浏览器终于发布了正式版本.喜欢MyIE2的朋友们也可以放心的将你的MyIE2升级为Maxthon了.以下是MyIE2平滑过渡到Mathxo ...
 - 📚 队列-DS笔记
			
数组队列 数组队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾, ...
 - FOC中的电流采样
			
电流采样是FOC的基础,具体有电流传感器采样.电阻采样,电阻采样以其简单低成本的应用广泛使用. 电阻法采样有单电阻采样.双电阻采样.三电阻采样. 一. 单电阻采样 单电阻采用分时采样,在一个PWM周期 ...
 - 说说对 SQL 语句优化有哪些方法?(选择几条)
			
1.Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可 以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后. 2.用 EXISTS 替代 ...
 - Correct the classpath of your application so that it contains a single, compatible version of org.springframework.util.Assert
			
一.问题描述 今天启动springboot工程时,报上面的错误. 二.解决方法 加入如下pom: <dependency> <groupId>org.springframewo ...