需求分析:
点击登录按钮时,页面发送请求并提交参数(username和password)
请求发送--》controller--》Service--》Mapper--》DB
员工表employee。
代码开发:
//mapper接口,持久层与数据库进行交互
package com.itheima.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.itheima.entity.Employee; import org.apache.ibatis.annotations.Mapper; @Mapper public interface EmployeeMapper extends BaseMapper<Employee> { }
//service接口,继承IService
package com.itheima.service; import com.baomidou.mybatisplus.extension.service.IService; import com.itheima.entity.Employee; public interface EmployeeService extends IService<Employee> { }
//serviceimpl类实现service接口
package com.itheima.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.itheima.entity.Employee; import com.itheima.mapper.EmployeeMapper; import com.itheima.service.EmployeeService; import org.springframework.stereotype.Service; @Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService{ }
返回结果类:通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端页面
package com.itheima.common; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * 通用返回结果,服务器端响应的数据最终都会封装成此对象 * @param <T> */ @Data public class R<T> { private Integer code; //编码:1成功,0和其它数字为失败 private String msg; //错误信息 private T data; //数据 private Map map = new HashMap(); //动态数据 //<T>表示该方法是个泛型方法, R<T>是返回值 public static <T> R<T> success(T object) { R<T> r = new R<T>(); r.data = object; r.code = 1; return r; } public static <T> R<T> error(String msg) { R r = new R(); r.msg = msg; r.code = 0; return r; } public R<T> add(String key, Object value) { this.map.put(key, value); return this; } }
controller.EmployeeController控制器提供服务
package com.itheima.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.itheima.common.R; import com.itheima.entity.Employee; import com.itheima.service.EmployeeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Slf4j @RestController @RequestMapping("/employee") public class EmployeeController { @Autowired private EmployeeService employeeService; //传过来的json的key需要和employee实体类中的属性名相同才能封装 /** * 员工登录 * */ @PostMapping("/login") public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){ String password = employee.getPassword(); //1、将页面提交的密码password进行md5加密 password = DigestUtils.md5DigestAsHex(password.getBytes()); //2、根据页面提交的用户名username查询数据库 LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<Employee>(); queryWrapper.eq(Employee::getUsername, employee.getUsername()); 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并返回登录成功结果 HttpSession session = request.getSession(); session.setAttribute("employee", emp.getId()); return R.success(emp); } }
标签:service,登录,开发,org,后台,import,com,public,itheima From: https://www.cnblogs.com/fxzm/p/17141813.html