(一)登录
实现思路:
- 接收到用户登录输入的用户名和密码,封装到了emp对象中
- 对密码进行MD5加密
- 创建条件构造器
- 添加sql查询判断条件,emp对象中的Username等于Employee数据表中的Username
- 调用MyBatis-Plus的方法查询数据库,返回Employee对象
- 判断员工是否存在
- 判断员工账号和密码是否匹配
- 判断员工是否被禁用
- 登录成功,将员工id存入Session
- 返回成功结果【员工对象】
controller层代码如下:
@PostMapping("/login") public R login(HttpSession session, @RequestBody Employee emp){ log.info("【登录员工信息:{}】",emp); String password = DigestUtils.md5DigestAsHex(emp.getPassword().getBytes()); LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Employee::getUsername,emp.getUsername()); Employee employee = employeeService.getOne(wrapper); if (employee==null){ return R.error("员工不存在!"); } if (password==null){ return R.error("员工账号和密码不匹配!"); } if (employee.getStatus()==0){ return R.error("员工已禁用!"); } session.setAttribute("employee",employee.getId()); return R.success(employee); }
(二)登录退出
实现思路:
- 清理session中用户信息,直接让当前这个用户关联的session对象立即失效,其中保存的数据也被删掉了
- 再返回处理结果
controller层
@PostMapping("/logout")
public R logout(HttpSession session){
session.invalidate();
return R.success("退出成功!");
}
(三)新增
实现思路:
- 接收到用户登录输入的用户名和密码,封装到了emp对象中
- 给emp对象设置使用md5加密之后的默认密码
- 给emp对象设置默认状态为启用
- 调用mybatisplus提供的通用IService接口类的save新增保存方法
- 返回处理结果
controller层
@PostMapping
public R add(HttpSession session,@RequestBody Employee emp){
emp.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
emp.setStatus(1);
boolean flag = employeeService.save(emp);
return flag?R.success(true):R.error("新增员工失败!");
}
(四)分页查询
实现思路:
- 调用业务处理
- 响应处理结果
controller层
@GetMapping("/page")
public R<Page<Employee>> selectPage(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int pageSize, String name){
Page<Employee> empPage = employeeService.findPage(page,pageSize,name);
return R.success(empPage);
}
service层
public interface EmployeeService extends IService<Employee> {
Page<Employee> findPage(int page, int pageSize, String name);
}
实现思路:
- 注入employeeDao
- 配置MyBatisPlus分页拦截器,在公共部分已配置
- 执行分页查询 返回Page对象
- 将分页查询参数page和pageSize封装到Page对象中
- 创建wrapper对象 设置查询条件
- 调用selectPage方法 传入Page和Wrapper对象 完成分页查询
- 返回Page对象
serviceImpl层代码实现如下:
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeDao, Employee> implements EmployeeService {
@Autowired
private EmployeeDao employeeDao;
//findPage实现
@Override
public Page<Employee> findPage(int page, int pageSize, String name) {
Page<Employee> employeePage = new Page<>(page, pageSize);
LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();
wrapper.like(name!=null && name.length()>0,Employee::getName,name);
employeeDao.selectPage(employeePage,wrapper);
return employeePage;
}
}
(五)根据ID查询
实现思路:
- 调用mybatisplus提供的通用IService接口类的getById()方法
- 响应处理结果
controller层实现代码:
@GetMapping("/{id}")
public R<Employee> getById(@PathVariable Long id){
Employee employee = employeeService.getById(id);
return R.success(employee);
}
(六)禁用 && 启用
controller层
@PutMapping
public R<String> updateEmp(@RequestBody Employee employee,HttpSession session){
//1.调用service处理
int rows = employeeService.updateEmp(employee);
//2.响应处理结果
return rows>0?R.success("修改成功!"):R.error("修改失败!");
}
service层
public interface EmployeeService extends IService<Employee> {
Page<Employee> findPage(int page, int pageSize, String name);
}
serviceImpl层
实现思路:
- 注入employeeDao
- 修改员工状态status MyBatisPlus中的修改默认使用了动态修改部分字段 id和status,只会根据id修改status
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeDao, Employee> implements EmployeeService {
@Autowired
private EmployeeDao employeeDao;
//修改员工状态实现
@Override
public int updateEmp(Employee employee) {
int rows = employeeDao.updateById(employee);
return rows;
}
}
本文含有隐藏内容,请 开通VIP 后查看