1.创建EmployeeService,使用Mybatis-plus(MP),使其接口继承了IService
package com.itheima.reggie.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.entity.Employee;
public interface EmployeeService extends IService<Employee> {
}
2.创建EmployeeServiceImpl继承ServiceImpl<M extends BaseMapper<T>, T> 执行了EmployeeService接口
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.mapper.EmployeeMapper;
import com.itheima.reggie.service.EmployeeService;
import org.springframework.stereotype.Service;
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService{
}
3.创建EmployeeMapper使其继承BaseMapper<T>
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.reggie.entity.Employee;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
}
4.创建EmployeeController,添加其注解
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
}
5.分析登录功能
a . 获取前端传来的密码进行Md5加密
b.构造封装条件(以用户名为条件)
c.根据用户名进行查询
d.判断结果是否为空,若为空则用户不存在
e.用户存在判断密码是否相同,不相同则提示密码错误
f.密码正确判断此用户是否为禁用状态,若禁用则提示用户已被禁用
g.登录成功,将用户的id存入到session中
@PostMapping("/login")
public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
//1.对前端传来的密码进行Md5加密
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
//2.构造封装条件
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername,employee.getUsername());
//3.根据用户名进行查询
Employee emp = employeeService.getOne(queryWrapper);
//4.判断结果是否为空 如果为空返回错误信息
if(emp == null){
return R.error("登录失败");
}
//5.判断密码是否相同
if(!emp.getPassword().equals(password)){
return R.error("密码错误!");
}
//6.判断用户状态是否为锁定状态
if(emp.getStatus() != 1 ){
return R.error("用户已禁用");
}
//7.登录成功将用户id存入的session中
request.getSession().setAttribute("employee",emp.getId());
return R.success(emp);
}
6.登录退出功能实现
a.将存入session中的信息移除返回提示信息
@PostMapping("/logout")
public R<String> logout(HttpServletRequest request){
//清理session中的指定数据
request.getSession().removeAttribute("employee");
return R.success("退出成功");
}