瑞吉外卖——day2

目录

一、新增员工

二、查询分页数据

三、启用、禁用员工账户、编辑员工信息


一、新增员工

点击左上角新增员工

 页面如下:

我们随便填数据 ,点击保存,请求的地址如下

返回前端可以看到请求方式为Post

 在employeeController中编写对应的代码

    /*
     * 新增员工
     */
    @PostMapping
    public R<String> add(HttpServletRequest request, @RequestBody Employee employee) {

        employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));

        employee.setCreateTime(LocalDateTime.now());
        employee.setUpdateTime(LocalDateTime.now());
        Long empId = (Long) request.getSession().getAttribute("employee");
        employee.setCreateUser(empId);
        employee.setUpdateUser(empId);

        employeeService.save(employee);

        return R.success("新增员工成功");
    }

这里我们可以发现对于createTime、updateTime、createUser、updateUser这几个字段其实是公共字段,即几个表里都会有,那么我们可以使用mybatis-plus进行公共字段填充,就不需要每次写4行设置属性的代码了

Employee中公共字段我们需要添加@TableField属性并且设置什么时候填充

@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;

    private Integer status;

    @TableField(fill = FieldFill.INSERT)  // 插入时填充字段
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)  // 插入和更新时填充字段
    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)  // 插入时填充字段
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)  // 插入和更新时填充字段
    private Long updateUser;

}

接下来编写一个MyMetaObjectHandler继承mybatis-plus中的MetaObjectHandler

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    /*
     * 插入字段,自动填充
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段填充【insert】");
        log.info(metaObject.toString());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("createUser", BaseContext.getCurrentId());
        metaObject.setValue("updateUser", BaseContext.getCurrentId());
    }

    /*
     * 更新字段,自动填充
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("公共字段填充【update】");
        log.info(metaObject.toString());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("updateUser", BaseContext.getCurrentId());
    }
}

 则添加员工的代码可简化为

    /*
     * 新增员工
     */
    @PostMapping
    public R<String> add(HttpServletRequest request, @RequestBody Employee employee) {

        employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
        /*
         * 使用MP公共字段自动填充
         */
        employeeService.save(employee);

        return R.success("新增员工成功");
    }

二、查询分页数据

分页数据需要使用到Mybatis-plus的分页构造器

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

页面发送的请求如下

 当添加了搜索字段后

前端Element-UI需要分页数据进行展示,我们返回分页信息

    /*
     * 返回分页查询的数据
     */
    @GetMapping("/page")
    public R<Page> page(int page, int pageSize, String name) {
        log.info("page:{}, pageSize:{}, name:{}", page, pageSize, name);

        // 构造分页器
        Page pageInfo = new Page(page, pageSize);

        // 构造条件构造器
        LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();
        // 构造过滤条件
        wrapper.like(!StringUtils.isEmpty(name), Employee::getName, name);
        // 构造排序条件
        wrapper.orderByDesc(Employee::getUpdateTime);

        // 查询
        employeeService.page(pageInfo, wrapper);
        return R.success(pageInfo);
    }

三、启用、禁用员工账户、编辑员工信息

对员工进行禁用后,员工就无法登录管理后台了,禁用实际上就是对应修改employee表中的status字段,即更新。那么本质上还是更新数据,可以和编辑功能一起写

 编辑页面如下:

 很显然这里的数据是通过查询数据库进行回显的,当我们点击编辑页面后,会发送以下GET请求

我们需要在Controller中编写对应的方法处理请求,由于类上已经加了@RequestMapping("/employee"),这里方法上直接写“/{id}”即可

    /*
     * 编辑员工的请求,此时根据id返回一个employee进行回显
     */
    @GetMapping("/{id}")
    public R<Employee> getById(@PathVariable Long id) {
        log.info("根据id查询员工信息");
        Employee employee = employeeService.getById(id);
        if(employee != null) {
            return R.success(employee);
        } else return R.error("没有查询到员工信息");

    }

回显完成后我们还需要编写保存方法

    /*
     * 根据员工id修改信息,通用性 编辑和禁用皆可使用
     */

    @PutMapping
    public R<String> update(HttpServletRequest request,@RequestBody Employee employee) {
        log.info("修改的用户id为{}", employee.getId());
        Long empId = (Long)request.getSession().getAttribute("employee");
        // Mp 公共字段自动填充
//        employee.setUpdateTime(LocalDateTime.now());
//        employee.setUpdateUser(empId);

        employeeService.updateById(employee);
        return R.success("更新员工成功");
    }

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoeil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值