Day1 黑马瑞吉外卖项目登录页(Springboot、MybatisPlus)

瑞吉外卖登录页代码及注解

这里前端请求地址为 localhost:8080/employee/login

  • @PostMapping与前端请求方式(post方法)对应
  • @Requestbody注解用于接收json格式的字符串
  • HttpServletRequest 用来获取Session
//方法中传入HttpServletRequest,用来获取Session,	@requestbody注解用于接收json格式的字符串,因为前端传过来的是此种方式,所以要在此处写上此注解
 public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
//    1.将页面提交的密码password进行md5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
//    2.根据页面提交的用户username查询数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
//    第一个参数为查询的表或查询条件  第二个参数为你传的值
        1.queryWrapper.eq(Employee::getUsername,employee.getUsername());
//   1.1 这里的Employee::getUsername相当于先 实例化了Employee =>
		//       Employee employee =  new Employee();
		//      然后调用了 employee.getUsername()方法
		//       eq相当于赋值 “=” ,也就是说将employee.username作为参数传递
//    getOne方法是因为这里的username在数据库中是唯一的 unique  所以可以使用getOne来查询
        Employee emp = employeeService.getOne(queryWrapper);
//    3.如果没有查询到返回查询结果
        if(emp == null){
            return R.error("用户名不存在,登录失败");
        }
//    4.密码比对,如果不一致返回登录失败结果
        if(!emp.getPassword().equals(password)){
            return R.error("用户名或密码错误");
        }
//    5.查看员工状态,如果为禁用状态,返回禁用结果
        if(emp.getStatus()==0){
            return R.error("账号已禁用");
        }
//    6.登录成功,将员工id存入Session并返回登录成功结果
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
  • 这里将前端穿过来的密码进行MD5加密
      	String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
  • LambdaQueryWrapper是mybatis-plus的一个工具类,如注解所示
  • 我们此时调用的是他的eq方法,如图可知,eq即相当于等于,在此处用于判断在数据库中遍历出的用户名是否和前端页面用户输入的用户名相同,相同的话即代表数据库中有这个值,反之则无
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
//    第一个参数为查询条件  第二个参数为前端传过来的值
//    这里的是根据用户名Employee::getUsername来查询  值为employee.getUsername()
//    这个整个相当于把条件封装了进去
        queryWrapper.eq(Employee::getUsername,employee.getUsername());
//    getOne方法是因为这里的username在数据库中做了唯一约束unique  所以可以使用getOne来查询
        Employee emp = employeeService.getOne(queryWrapper);
  • LambdaQueryWrapper常见功能代表详解:

  • 这里的R是指通用返回结果类 服务端响应的数据都会封装到这里返回给前端**
    **success是R封装的方法 , 还有error()等方法
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
  • 用户登录退出功能
 @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request){
//   清理Session中保存的当前登录员工的id
        request.getSession().removeAttribute("employee");
         return R.success("退出成功");
    }

你可能感兴趣的:(项目实战,spring,boot,java,后端)