登录者个人信息查询

目录

🥞1.vo层描述

🍿2..vo层创建

🌭3.编写controller层 

🥓4.service层 

🧂5.测试 


1.vo层描述

Spring Boot项目中的实体类通常用于映射数据库表,包含了业务对象的所有属性。然而,前端或其他服务的展示需求可能只关心部分属性,这时直接传递实体类可能带来信息冗余和安全风险。VO层的引入解决了这些问题,提高了数据传递的定制性和灵活性。

注意事项:

  • 1. VO对象应该只包含与业务相关的数据和方法,不应该包含任何与数据持久化相关的属性或方法;
  • 2. VO对象应该尽量简单,不应该包含复杂的业务逻辑,这是Service层的职责;
  • 3. VO对象的属性和方法应该与前端的展示需求相匹配,以便数据传输的最小化。

2..vo层创建

  • 获取登录者信息时,我们并不不希望将用户的全部信息都暴露出去,也就是不将Dao层作为返回数据类型。
  • VO层的存在就是方便前端获取数据,后端将前端的需要的数据做一个整合,打包成一个类。将此类暴露出去即可
/*** vo类型,避免将UserDo暴露出去*/
@Data
public class UserVo {private Long id;/*** 昵称*/private String name;/*** 头像*/@JsonProperty("head_img")private String headImg;/*** 用户签名*/private String slogan;/*** 0表示女,1表示男*/private Integer sex;/*** 积分*/private Integer points;/*** 邮箱*/private String mail;}

3.编写controller层 

controller只作为数据传输层,不处理业务逻辑,同时引入swagger方便调试,并返回包装类

    @ApiOperation("查询登陆者个人信息")@GetMapping("/detail")public JsonData detailLogin() {UserVo loginUser = userService.findUserDetail();return JsonData.buildSuccess(loginUser);}

4.service层 

创建service后并实现对应的方法,我们不传递id,而是根据拦截器获取threadLocal,来获取登录者信息

  • 1.根据拦截器,获取threadLocal,进一步获取登录者信息
  • 2.让后根据登录者信息,根据id查询,获取其全部信息
  • 3.通过属性对拷,将其UserVo暴露出去,避免Dao层暴露
    /*** 查看登录者个人信息** @return*/@Overridepublic UserVo findUserDetail() {//从拦截获取threadLocal,获取到登录者LoginUser loginUser = LoginInterceptor.threadLocal.get();//根据登录者id查询,获取登录者全部信息UserDO userDO = userMapper.selectOne(new QueryWrapper<UserDO>().eq("id", loginUser.getId()));//将属性对拷UserVo userVo = new UserVo();BeanUtils.copyProperties(userDO, userVo);return userVo;}

5.测试 

通过postman或者swagger来测试

  • postman

  • swagger 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/579255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT 最近使用的项目配置文件

目录 1 QT 最近使用的项目配置文件所在路径 2 QtCreator.ini 1 QT 最近使用的项目配置文件所在路径 C:\Users\your username\AppData\Roaming\QtProject QtCreator.ini最好先备份一份 2 QtCreator.ini ProjectExplorer 下面的 RecentProjects\FileNames RecentProjects\…

【AI】命令行调用大模型

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 【AI】命令行调用大模型引入正文初始化项目撰写脚本全局安装 成果展示 【AI】命令…

远程过程调用-buttonrpc源码解析5-函数绑定

前面几节的文章里提到过“通过一定的技术手段&#xff0c;通知远程服务器调用某个函数来执行相应的功能”&#xff0c;本片文章分析服务端如何使用std::bind函数&#xff0c;统一函数调用形式。 1、先看一个简单的例子&#xff1a; 温馨提示&#xff1a;std::bind除了绑定普通…

Linux——共享内存

Linux——共享内存 什么是共享内存共享内存原理Linux下共享内存的接口创建/获取共享内存&#xff1a;shmgetftok函数 映射共享内存到进程地址空间&#xff1a;shmat 解除共享内存映射&#xff1a;shmdt删除共享内存段&#xff1a;shmctl 利用共享内存进行通信 我们之前学习了匿…

关于未来自我的发展和一些学习方法(嵌入式方向)

我是一名大二的学生&#xff0c;考研还是就业&#xff0c;到底是重视专业课还是重视数学英语&#xff0c;这些问题一直困扰了我很久&#xff0c;但如今已经有了一些浅显的认识&#xff0c;所以才会想写这样一篇文章来记录一下自己的状态和未来的规划 下面的看法都是个人的看法&…

蓝桥杯刷题_day7_动态规划_路径问题

文章目录 DAY7下降路径最小和最小路径和地下城游戏 DAY7 下降路径最小和 【题目描述】 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元…

通过node 后端实现颜色窃贼 (取出某个图片的主体rgb颜色 )

1.需求 我前端轮播图的背景色 想通过每一张轮播图片的颜色作为背景色 这样的话 需要通过一张图片 取出图片的颜色 这个工作通过前端去处理 也可以通过后端去处理 前端我试了试 color-thief 的插件 但是 这个插件是基于canvas 的模式来的 我需要在小程序中使用这个插件 而且是…

Qt 完成图片的缩放拖动

1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…

web布局——说清楚fixed布局

极限省流 想要fixed做导航页面&#xff1a;指定清楚top、left、right、bottom&#xff0c;没指定清楚布局位置就会采用默认的方式&#xff1a; 0&#xff09;父元素的padding&#xff1a;fixed元素相对位移 1&#xff09;同级元素是fixed元素&#xff1a;覆盖 2&#xff09…

自定义类型:【联合体和枚举】

一.联合体 1.联合体类型的声明 联合体像结构体一样&#xff0c;也是有一个或者多个成员组成&#xff0c;当然也可以不同的类型。但不同的是&#xff0c;比编译器只为最大的成员分配足够的内存空间&#xff0c;所有成员共用同一块内存空间。所以联合体也叫做&#xff1a;共用体…

GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息&#xff1a; 设置一下采样点参数&#xff1a; 代码&#xff1a; //设置研究区位置 var table ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019"); var roi table.filter(ee.Filter.eq(provinces,beijing)); Map.centerObjec…

公司服务器被.rmallox攻击了如何挽救数据?

公司服务器被.rmallox攻击了如何挽救数据&#xff1f; .rmallox这种病毒与之前的勒索病毒变种有何不同&#xff1f;它有哪些新的特点或功能&#xff1f; .rmallox勒索病毒与之前的勒索病毒变种相比&#xff0c;具有一些新的特点和功能。这种病毒主要利用加密技术来威胁用户&am…