拓展08-Java代码实现回收站SSS+EasyUI

本文介绍了如何使用Java实现数据的回收站功能。通过在数据库中添加一个isdelete字段,区分正常数据和回收站数据。在后台代码中,分别处理正常查询和回收站查询,并提供了删除、恢复和彻底删除的操作。在前端使用EasyUI展示回收站,实现对话框和数据网格的交互。
摘要由CSDN通过智能技术生成

1、效果

话不多说,先来讲讲想要的效果:
    java的数据表格删除数据时,并没有真正从数据库中永久的删除,而是还是在数据库中,只不过不显示在页面中。当在回收站页面上彻底删除操作时,才是真正的从数据库中删除数据,同时,在回收站也可以恢复数据。

添加一个回收站按钮,当删除数据时,会在回收站中显示
在这里插入图片描述
点开回收站,dialog+datagrid展示,提供恢复彻底删除按钮
在这里插入图片描述

2、总体思路

  • 以employee为例
  • 在数据库的表格中新添一个属性isdelete(名字随意取,但是注意千万不要取delete),类型可以为bit或者bigint等等。
  • 本例中类型选择的为bigint,所以在Employee的domain实体类中,新增一个字段Long isdelete
  • 字段取值为1和2,当为1时,表示未删除,在正常展示,当为2时,表示被删除,只在回收站中展示。
  • 通过.eq()比较在Specification中设置规则(下面EmployeeQuery代码中详细介绍)
  • 前台设置删除,恢复,彻底删除这几个按钮,对应的在controller中设置相应的路径和对应的方法

3、后台代码

3.1、domain

在Employee类中添加 **private Long isdelete;**字段,同时get和set方法。
Employee

3.2、BaseQuery

    在BaseQuery中新添加一个抽象方法,createSpecificatio用于展示正常数据,createSpecificationRe用于展示回收站的数据。
也可以写在一个里面,增加判断。偷个懒,多写一个。

public abstract Specification createSpecification();
public abstract Specification createSpecificationRe();
3.3、EmployeeQuery

同时在EmployeeQuery中添加 private Long isdelete;字段,get和set方法。
在这里插入图片描述
重写createSpecificatio和createSpecificationRe方法:

isdelete = 1L,正常展示

@Override
    public Specification createSpecification() {
   
        Specification<Employee> specification = Specifications.<Employee>and()
                .like(StringUtils.isNotBlank(username), "username", "%" + username + "%")
                .like(StringUtils.isNotBlank(email), "email", "%" + email + "%")
                .eq(departmentid!=null,"department.id",departmentid)
                .eq(true,"isdelete",1L)
                .build();
        return specification;
    }

isdelete = 2L,回收站展示

@Override
    public Specification createSpecificationRe() {
   
        Specification<Employee> specification = Specifications.<Employee>and()
                .like(StringUtils.isNotBlank(username), "username", "%" + username + "%")
                .like(StringUtils.isNotBlank(email), "email", "%" + email + "%")
                .eq(departmentid!=null,"department.id",departmentid)
                .eq(true,"isdelete",2L)
                .build();
        return specification;
    }
3.4、BaseServiceImpl

queryPage正常查询展示

   @Override
    public Page<T> queryPage(BaseQuery query) {
   
        //1、得到排序对象
        Sort sort = query.createSort();
        //2、得到分页对象
        Pageable pageable = new PageRequest(query.getCurrentPage2(), query.getPageSize(), sort);
        //3、得到查询规则
        Specification spec = query.createSpecification();
        return baseRepository.findAll(spec, pageable);
    }

queryPage2回收站查询展示

 @Override
 public Page<T> queryPage2(BaseQuery query) {
   
     //1、得到排序对象
     Sort sort = query.createSort();
     //2、得到分页对象
     Pageable pageable = new PageRequest(query.getCurrentPage2(), query.getPageSize(), sort);
     //3、得到查询规则
     Specification spec = query.createSpecificationRe();
     return baseRepository.findAll(spec, pageable);
 }
3.5、EmployeeController

    /page路径

调用queryPage正常查询展示

@RequestMapping("/page")
    @ResponseBody
    public UIPage<Employee> list(EmployeeQuery query) {
   
        Page<Employee> page = employeeService.queryPage(query);
        return new UIPage(page);
    }

    /recycle路径
调用queryPage2回收站查询展示

@RequestMapping("/recycle")
    @ResponseBody
    public UIPage<Employee> recycle(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值