【电商项目实战】个人资料(详细篇)
创始人
2024-03-06 15:46:49
0

在这里插入图片描述
🍁博客主页:👉@不会压弯的小飞侠
欢迎关注:👉点赞👍收藏留言
系列专栏:👉SpringBoot电商项目实战
学习社区: 👉不会压弯的小飞侠
知足上进,不负野心。
🔥欢迎大佬指正,一起学习!一起加油!

在这里插入图片描述

目录

  • 🍁个人资料-持久层
    • 🔥接口与抽象方法
    • 🔥配置SQL映射
    • 🔥测试
  • 🍁个人资料-业务层
    • 🔥异常
    • 🔥接口与抽象方法
    • 🔥实现抽象方法
    • 🔥测试
  • 🍁个人资料-控制层
    • 🔥设计请求
    • 🔥处理请求
  • 🍁个人资料-前端页面


🍁个人资料-持久层

  • 在执行修改用户资料之前,当用户刚打开修改资料的页面时,就应把当前登录的用户信息显示到页面中。

🔥接口与抽象方法

  • 在UserMapper接口中添加updateInfoByUid(User user)方法。
/**
* 根据uid更新用户资料
* @param user 封装了用户id和新个人资料的对象
* @return 受影响的行数
*/
Integer updateInfoByUid(User user);

🔥配置SQL映射

  • 在UserMapper.xml中配置Integer updateInfoByUid(User user)抽象方法的映射。


UPDATE
t_user
SET
phone = #{phone},
email = #{email},
gender = #{gender},
modified_user = #{modifiedUser},
modified_time = #{modifiedTime}
WHERE
uid = #{uid}

🔥测试

  • 在UserMapperTests中编写并执行单元测试。
 @Testpublic void updateInfoByUid() {User user = new User();user.setUid(10);user.setPhone("15512323456");user.setEmail("cat@qq.com");user.setGender(1);user.setModifiedUser("cat");user.setModifiedTime(new Date());Integer rows = userMapper.updateInfoByUid(user);System.out.println("rows=" + rows);}

在这里插入图片描述

🍁个人资料-业务层

🔥异常

  • 1.关于用户修改个人资料是由两个功能组成的。
    • 打开页面时显示当前登录的用户的信息;
    • 点击修改按钮时更新用户的信息。
  • 2.关于打开页面时显示当前登录的用户的信息,可能会因为用户数据不存在、用户被标记为“已删除”而无法正确的显示页面,则抛出UserNotFoundException异常。
  • 3.关于点击修改按钮时更新用户的信息,在执行修改资料之前仍需再次检查用户数据是否存在、用户是否被标记为“已删除”,则可能抛出UserNotFoundException异常。并且在执行修改资料过程中,还可能抛出UpdateException异常。

🔥接口与抽象方法

  • 在IUserService接口中添加两个抽象方法,分别对应以上两个功能。
/**
* 获取当前登录的用户的信息
* @param uid 当前登录的用户的id
* @return 当前登录的用户的信息
*/
User getByUid(Integer uid);
/**
* 修改用户资料
* @param uid 当前登录的用户的id
* @param username 当前登录的用户名
* @param user 用户的新的数据
*/
void changeInfo(Integer uid, String username, User user);

🔥实现抽象方法

  • 在UserServiceImpl实现类中实现getByUid(Integer uid)和changeInfo(Integer uid, String username,User user)以上两个抽象方法,getByUid(Integer uid)和changeInfo(Integer uid, String username, User user)方法的具体代码实现。
 @Overridepublic User getByUid(Integer uid) {// 调用userMapper的findByUid()方法,根据参数uid查询用户数据User result = userMapper.findByUid(uid);// 判断查询结果是否为nullif (result == null) {// 是:抛出UserNotFoundException异常throw new UserNotFoundException("用户数据不存在");}// 判断查询结果中的isDelete是否为1if (result.getIsDelete().equals(1)) {// 是:抛出UserNotFoundException异常throw new UserNotFoundException("用户数据不存在");}// 创建新的User对象User user = new User();// 将以上查询结果中的username/phone/email/gender封装到新User对象中user.setUsername(result.getUsername());user.setPhone(result.getPhone());user.setEmail(result.getEmail());user.setGender(result.getGender());// 返回新的User对象return user;}@Overridepublic void changeInfo(Integer uid, String username, User user) {// 调用userMapper的findByUid()方法,根据参数uid查询用户数据User result = userMapper.findByUid(uid);// 判断查询结果是否为nullif (result == null) {// 是:抛出UserNotFoundException异常throw new UserNotFoundException("用户数据不存在");}// 判断查询结果中的isDelete是否为1if (result.getIsDelete().equals(1)) {// 是:抛出UserNotFoundException异常throw new UserNotFoundException("用户数据不存在");}// 向参数user中补全数据:uiduser.setUid(uid);// 向参数user中补全数据:modifiedUser(username)user.setModifiedUser(username);// 向参数user中补全数据:modifiedTime(new Date())user.setModifiedTime(new Date());// 调用userMapper的updateInfoByUid(User user)方法执行修改,并获取返回值Integer rows = userMapper.updateInfoByUid(user);// 判断以上返回的受影响行数是否不为1if (rows != 1) {// 是:抛出UpdateException异常throw new UpdateException("更新用户数据时出现未知错误,请联系系统管理员");}}

🔥测试

  • 在UserServiceTests类中进行单元测试。
 @Testpublic void getByUid() {try {Integer uid = 10;User user = iUserService.getByUid(uid);System.out.println(user);} catch (ServiceException e) {System.out.println(e.getClass().getSimpleName());System.out.println(e.getMessage());}}@Testpublic void changeInfo() {try {Integer uid = 11;String username = "cat";User user = new User();user.setPhone("18867478376");user.setEmail("lll@cat.cn");user.setGender(1);iUserService.changeInfo(uid, username, user);} catch (ServiceException e) {System.out.println(e.getClass().getSimpleName());System.out.println(e.getMessage());}}

在这里插入图片描述

🍁个人资料-控制层

🔥设计请求

  • 设计用户提交显示当前登录的用户信息的请求,并设计响应的方式。
请求路径:/users/get_by_uid
请求参数:HttpSession session
请求类型:GET
响应结果:JsonResult
  • .设计用户提交执行修改用户信息的请求,并设计响应的方式。
请求路径:/users/change_info
请求参数:User user, HttpSession session
请求类型:POST
响应结果:JsonResult

🔥处理请求

  • 在UserController类中添加处理请求的getByUid()方法
 @GetMapping("get_by_uid")public JsonResult getByUid(HttpSession session) {// 从HttpSession对象中获取uidInteger uid = getUidFromSession(session);// 调用业务对象执行获取数据User data = userService.getByUid(uid);// 响应成功和数据return new JsonResult(OK, data);}
  • 在UserController类中添加处理请求的changeInfo(User user, HttpSession session)方法。
 @RequestMapping("change_info")public JsonResult changeInfo(User user, HttpSession session) {// 从HttpSession对象中获取uid和usernameInteger uid = getUidFromSession(session);String username = getUsernameFromSession(session);// 调用业务对象执行修改用户资料userService.changeInfo(uid, username, user);// 响应成功return new JsonResult(OK);}

🍁个人资料-前端页面

  • 在userdata.html页面中body标签内部的最后,添加script标签用于编写JavaScript程序。

  • 打开浏览器先登录,再访问http://localhost:8080/web/login.html页面并进行用户个人资料的修改测试。
  • 重新注册一个方便测试
    • 用户名:lll
    • 密码:666666
    • 注册完之后重新在UserServiceTests类中进行单元测试。

在这里插入图片描述

  • 登录
  • 用户名:lll
  • 密码:666666

在这里插入图片描述

  • 点击管理->修改资料
    在这里插入图片描述

  • 点击个人资料
    在这里插入图片描述

  • 修改个人资料

  • 点击修改
    在这里插入图片描述

  • 点击修改后,会弹出一个修改成功的弹窗,然后点击确定,重新跳转到userdata.html页面,刷新个人资料信息。
    在这里插入图片描述


学习视频:

【SpringBoot项目实战完整版】SpringBoot+MyBatis+MySQL电脑商城项目实战-哔哩哔哩】
https://b23.tv/qGh9x9L

在这里插入图片描述

相关内容

热门资讯

小学语文《月光曲》说课稿 小学语文《月光曲》说课稿  一、说教材:  我说课的内容是九年义务教育六年制小学语文教科书第十册第十...
小朋友生日会主持稿 2020小朋友生日会主持稿范文(通用3篇)  每个人的生日或许都过得不一样,那么对于小朋友生日宴会的...
期末复习动员发言稿 关于期末复习动员发言稿(精选5篇)  在现在社会,发言稿的使用越来越广泛,使用正确的写作思路书写发言...
开学典礼教师发言稿 开学典礼教师发言稿(通用25篇)  在现实社会中,我们可以使用发言稿的机会越来越多,发言稿可以按照用...
项目集中开工仪式上的讲话稿 项目集中开工仪式上的讲话稿(精选14篇)  在不断进步的社会中,用到讲话稿的地方越来越多,讲话稿可以...
《祖国在我心中》说课稿 《祖国在我心中》说课稿  一、教材简析。  《祖国在我心中》是第三单元《祖国》当中的第二篇主体课文,...
《苏州园林》的说课稿 《苏州园林》的说课稿(精选11篇)  作为一名辛苦耕耘的教育工作者,常常需要准备说课稿,说课稿有助于...
《鸟岛》说课的材料 《鸟岛》说课的材料范文  我说课的内容是九年制义务教育小学语文第四册第七单元第十八课《鸟岛》。  课...
西安铁一中开学典礼新闻稿 西安铁一中开学典礼新闻稿  西铁一中2012~2013学年第一学期开学典礼新闻稿  9月3日,西安铁...
民主生活会发言提纲 民主生活会发言提纲  民主生活会的—般程序:  1、确定会期,告知委员作准备。支部书记、副书记确定召...
《圆的面积》说课稿 《圆的面积》说课稿(精选10篇)  作为一名辛苦耕耘的教育工作者,时常需要编写说课稿,借助说课稿可以...
坐井观天课文评课稿 坐井观天课文评课稿(精选9篇)  在教学工作者开展教学活动前,通常需要用到评课稿来辅助教学,所谓评课...
《二次分类》的说课稿 《二次分类》的说课稿  一、教材分析  人是一个能动的个体,学习是学习者主动建构的过程。社会的发展也...
运动会加油稿300字左右 一校运会的召开,牵动着全校师生的心。校运会是展现文理风采的舞台。是检验文理素质的天平。校运会使大家汇...
《马路上的安全》大班安全说课... 《马路上的安全》大班安全说课稿  一、说教材  活动内容  未来出版社大班教材《健康》中的内容。  ...
企业交流座谈会发言稿 企业交流座谈会发言稿  在当下社会,我们都可能会用到发言稿,发言稿以发表意见,表达观点为主,是为演讲...
《演示作品的制作》说课稿 《演示作品的制作》说课稿范文  一、 说教材  1、课题《演示文稿的制作》  《演示文稿的制作》是人...
生态文明你我共建征文稿   生态文明是人类文明的新发展,它与物质文明、精神文明和政治文明具有同样重要的地位 ,生态文明你我共...
一年级语文小小的船说课稿 一年级语文小小的船说课稿(精选10篇)  作为一名辛苦耕耘的教育工作者,编写说课稿是必不可少的,借助...
论文答辩陈述稿怎么写   论文答辩陈述稿可以让同学们在答辩时更胸有成竹,更具条理性,为评委留下一个好印象。下面,小编为大家...