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

目录

1.需求

2.需求分析

3.demo搭建

数据库映射实体类

Controller

Service

Dao

4.结果验证


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

1.需求

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

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

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

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

需求4:不能输入空值  


2.需求分析

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

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

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


3.demo搭建

数据库映射实体类

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
}

Controller

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

修改密码的controller

@RestController
public class UpdatePasswordController {

    @Autowired
    private UpdatePasswordService updatePasswordService;

    @RequestMapping("update")
    public void updatePassword(@RequestParam(value = "username") String username,
                                  @RequestParam(value = "password") String password,
                                  @RequestParam(value = "newPsw") String newPsw){
        updatePasswordService.updatePassword(username,password,newPsw);
    }
}

根据username查询user的controller

@RestController
public class GetUserByUsernameController {
    @Autowired
    private GetUserByUsernameService getUserByUsernameService;

    @RequestMapping("seach")
    public @ResponseBody User getUserByUsername(String username){
        User user = getUserByUsernameService.getUserByUsername(username);
        return user;
    }
}

Service

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

修改密码的service

//接口层
@Service
public interface UpdatePasswordService {
    String updatePassword(String username,String password,String newPsw);
}


//接口实现层
@Service
public class UpdatePasswordServiceImp implements UpdatePasswordService{

    @Autowired
    private GetUserByUsernameMapper getUserByUsernameMapper;
    @Autowired
    private UpdatePasswordMapper updatePasswordMapper;


    @Override
    public String updatePassword(String username, String password, String newPsw) {
        //根据username获取user
        User user = getUserByUsernameMapper.getUserByUsername(username);

        if (user != null){
            if (StringUtils.isEmpty(username)||StringUtils.isEmpty(password)||StringUtils.isEmpty(newPsw)){
                System.out.println("输入不能为空");
                return "输入不能为空";
            }else if (!user.getPassword().equals(password)){
                System.out.println("原密码错误");
                return "原来密码错误";
            }
            else if (user.getPassword().equals(newPsw)){  
                System.out.println("新密码不能与旧密码相同!");
                return "新密码不能与旧密码相同!";
            }else if (user.getPassword().equals(password)){
                updatePasswordMapper.updatePasswordByUsername(username,newPsw);
                System.out.println("密码修改成功");
                return "密码修改成功";
            }else
                System.out.println("用户密码未修改");
                return "用户密码未修改";
        }else{
            System.out.println("5");
            return "用户不能为空";
        }

    }
}


根据username查询user的service

@Service
public interface GetUserByUsernameService {
    User getUserByUsername(String username);
}

@Service
public class GetUserByUsernameServiceImp implements GetUserByUsernameService {

    @Autowired
    private GetUserByUsernameMapper getUserByUsernameMapper;
    @Override
    public User getUserByUsername(String username) {
        User user = getUserByUsernameMapper.getUserByUsername(username);
        return user;
    }
}

Dao

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

修改密码的Dao

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

根据username查询user的Dao

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

4.结果验证

原来的密码为1141

密码错误

  新密码不能与老密码相同

修改密码成功

 

 

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值