新增员工的功能
简介:用户点击“新增员工” 按钮,然后在页面跳转到新增员工的界面,输入,username,password,name(与username不同,这里指的是员工的名字,username是账号), age,sex等,我们就可以在数据库中employee插入一条新的员工数据
这里是源码获取地址(https://kdocs.cn/l/cja9JxdvbyUa)
程序执行过程:
1,页面发送ajax请求,并以json的格式返回给服务端
2,服务端Controller接受数据并调用service进行数据保存
3.service调用mapper操作数据库,保存数据
代码开发
这里,我们分析一下 返回参数和传入参数
-
由于保存用户,不需要给页面其他数据,这里我们直接返回string的数据就行
-
函数,传入的参数,由于已经用json格式进行了封装,所以我们应该用到@RequestBody Employee employee,并且,保存好一个新的用户数据后,我们需要保存一个新的用户id到session,因此需要再次设置一个请求参数HttpServletRequest request 用来获取session保存新的用户id
-
请求的http路径我们设置成 http://localhost:8080/employee
-
请求方式是post
在对mapper,service,controller提前创建完接口后,我们直接在controller编写代码
我们先看一下初始的mysql的employee数据,以下,我们可以看到,这里初始密码其实是“123456”保存到mysql中其实是对数据进行的md5加密
首先,先对请求到的employee获取password,然后进行加密
employee.setPassword(DigestUtils.md5DigestAsHex(employee.getPassword().getBytes()));
然后,设置用户的创建时间和更新时间
employee.setUpdateTime(LocalDateTime.now()); employee.setCreateTime(LocalDateTime.now());
保存id到session里面
Long id = (Long)request.getSession().getAttribute("employee");
最后设置employee的UpdateUser和CreateUser(注意,这里一般是由管理员创建,所以我们直接用上面获取到的管理员的id就行,权限设置的是普通用户不能创建其他用户)
employee.setUpdateUser(id); employee.setCreateUser(id);
最后我们调用employeeService的save方法保存就行
employeeService.save(employee);
以下是完整的代码
@PostMapping
public R<String> employeeAdd(HttpServletRequest request, @RequestBody Employee employee){
log.info("添加员工信息");
//页面传过来的参数为json格式但是没有密码,所以设置一个初始密码就行
if(employee.getPassword()!=null){
employee.setPassword(DigestUtils.md5DigestAsHex(employee.getPassword().getBytes()));
}else{
employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
}
employee.setUpdateTime(LocalDateTime.now());
employee.setCreateTime(LocalDateTime.now());
//设置当前登录用户的id,前面是已经将id存到session里面了,所以直接拿就行
Long id = (Long)request.getSession().getAttribute("employee");
employee.setUpdateUser(id);
employee.setCreateUser(id);
employeeService.save(employee);
return R.success("用户添加成功!");
}
最后我们在swagger测试数据,注意(这里我们不用自己设置id,直接由mybatisplus的功能用雪花算法给我们自动生成新的id)
测试成功!!