• 【Demo】SpringBoot集合Mybatis修改账户密码逻辑


    目录

    1.需求

    2.需求分析

    3.demo搭建

    数据库映射实体类

    Controller

    Service

    Dao

    4.结果验证


    提醒:该Demo仅仅完成密码校验修改部分

    1.需求

    我需要根据 username 去修改 password,前端需要传入用户名,旧密码,新密码三个参数

    需求1:需要验证用户是否存在

    需求2:新密码不能与老密码相同

    需求3:修改密码前,需要验证旧密码

    需求4:不能输入空值  


    2.需求分析

    需要验证用户是否存在,需要一个根据username查询user的查询

    查询不存在,返回不存在用户;查询存在,得到用户当前密码

    前端传入数据时,验证传入的旧密码是否与当前密码相同,验证传入的新密码是否与当前密码相同


    3.demo搭建

    数据库映射实体类

    1. @Data
    2. public class User {
    3. private Integer id;
    4. private String username;
    5. private String password;
    6. }

    Controller

    Controller主要做从HTTP请求中获取信息,提取参数,并将其分发给不同的处理服务(service层),并向前端返回service层处理后的数据(JSON数据ModelAndView对象)

    修改密码的controller

    1. @RestController
    2. public class UpdatePasswordController {
    3. @Autowired
    4. private UpdatePasswordService updatePasswordService;
    5. @RequestMapping("update")
    6. public void updatePassword(@RequestParam(value = "username") String username,
    7. @RequestParam(value = "password") String password,
    8. @RequestParam(value = "newPsw") String newPsw){
    9. updatePasswordService.updatePassword(username,password,newPsw);
    10. }
    11. }

    根据username查询user的controller

    1. @RestController
    2. public class GetUserByUsernameController {
    3. @Autowired
    4. private GetUserByUsernameService getUserByUsernameService;
    5. @RequestMapping("seach")
    6. public @ResponseBody User getUserByUsername(String username){
    7. User user = getUserByUsernameService.getUserByUsername(username);
    8. return user;
    9. }
    10. }

    Service

    Service主要做逻辑处理,本Demo具体逻辑在此部分进行

    修改密码的service

    1. //接口层
    2. @Service
    3. public interface UpdatePasswordService {
    4. String updatePassword(String username,String password,String newPsw);
    5. }
    6. //接口实现层
    7. @Service
    8. public class UpdatePasswordServiceImp implements UpdatePasswordService{
    9. @Autowired
    10. private GetUserByUsernameMapper getUserByUsernameMapper;
    11. @Autowired
    12. private UpdatePasswordMapper updatePasswordMapper;
    13. @Override
    14. public String updatePassword(String username, String password, String newPsw) {
    15. //根据username获取user
    16. User user = getUserByUsernameMapper.getUserByUsername(username);
    17. if (user != null){
    18. if (StringUtils.isEmpty(username)||StringUtils.isEmpty(password)||StringUtils.isEmpty(newPsw)){
    19. System.out.println("输入不能为空");
    20. return "输入不能为空";
    21. }else if (!user.getPassword().equals(password)){
    22. System.out.println("原密码错误");
    23. return "原来密码错误";
    24. }
    25. else if (user.getPassword().equals(newPsw)){
    26. System.out.println("新密码不能与旧密码相同!");
    27. return "新密码不能与旧密码相同!";
    28. }else if (user.getPassword().equals(password)){
    29. updatePasswordMapper.updatePasswordByUsername(username,newPsw);
    30. System.out.println("密码修改成功");
    31. return "密码修改成功";
    32. }else
    33. System.out.println("用户密码未修改");
    34. return "用户密码未修改";
    35. }else{
    36. System.out.println("5");
    37. return "用户不能为空";
    38. }
    39. }
    40. }

    根据username查询user的service

    1. @Service
    2. public interface GetUserByUsernameService {
    3. User getUserByUsername(String username);
    4. }
    5. @Service
    6. public class GetUserByUsernameServiceImp implements GetUserByUsernameService {
    7. @Autowired
    8. private GetUserByUsernameMapper getUserByUsernameMapper;
    9. @Override
    10. public User getUserByUsername(String username) {
    11. User user = getUserByUsernameMapper.getUserByUsername(username);
    12. return user;
    13. }
    14. }

    Dao

    Dao负责和数据库进行操作,本demo因为sql语句简单使用注解,复杂sql建议写xml

    修改密码的Dao

    1. @Repository
    2. public interface UpdatePasswordMapper {
    3. @Update("update user set password = #{password} where username = #{username}")
    4. Integer updatePasswordByUsername(@Param("username")String username,@Param("password") String password);
    5. }

    根据username查询user的Dao

    1. @Repository
    2. public interface GetUserByUsernameMapper {
    3. @Select("select * from user where username = #{username}")
    4. User getUserByUsername (@Param("username") String username);
    5. }

    4.结果验证

    原来的密码为1141

    密码错误

      新密码不能与老密码相同

    修改密码成功

     

     

  • 相关阅读:
    hadoop集群中存在配置较低的数据节点应用如何应对磁盘数据溢满的问题之rebalance
    【JavaScript-25】js中深浅拷贝及其方法
    希尔排序和直接插入排序代码对比
    python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)
    一文读懂简单查询代价估算
    java计算机毕业设计ssm+vue招标投标系统
    基于单片机音乐弹奏播放DS1302万年历显示及源程序
    JAVA编程规范之应用分层
    如何找出电脑内的重复文件,查找电脑磁盘重复文件的方法
    使用OpenCV计算两幅图像的协方差
  • 原文地址:https://blog.csdn.net/m0_46628950/article/details/126056120