使用到的技术:
SSM框架+LayUi前端框架
想要的效果:
java的数据表格删除数据时,并没有真正从数据库中永久的删除,而是还是在数据库中,只不过不显示在页面中。当在写好的回收站页面上删除操作时,才是真正的从数据库中删除数据,当然,也可以恢复数据到页面上展示。
提个醒:
确定要做回收站功能,就要先做好准备工作。否则中途或者之后再做的话,工作量个难度相对会加大。
进入正题:
1、给数据库增加一个字段isdelete。
这个字段用来区分是页面数据还是回收站数据,用布尔类型对数据库比较优化。我此处使用的是bigint类型。
2、前台数据表格页面展示表中isdelete字段为1的数据
-
写相应的sql语句:
-
mybatis的拦截器自带分页功能,前面在将mybatis的时候讲过。此时需要注意的是后台返回给layui需要的数据格式。之前也将过的。下面将简单的贴上几张代码图
LayUi数据表格需要的数据格式:封装到了类PageResult中,返回给layui的时候就匹配上了
关于参数page对象,下面会讲解
LayUi需要的分页数据是:page和limit
所以建个BaseQuery类,其中就有这两个字段
父类mapper层
mybatis中拦截器自带分页的page对象的部分源码
父类service接口
service层的实现层的父类
自己类的service层的接口和实现类就直接继承相应的父类即可,父类中已经有了需要的方法
controller层
最后layui中数据表格中显示的数据为
只有部分数据,数据库中isdelete字段值为2的就没有显示出来,达到预期效果
3、由于上面已经拿到了数据表格中展示的数据,所以下面就写回收站中应该展示的数据。
sql语句: isdelete字段值为2的就是垃圾站的数据
mapper层:
自己写一个方法,方法名就是sql语句的id,也是返回page对象(上面说明了这个对象的来源)
service的接口
返回定义的PageResult对象。具体原因上面也说明了
service层的实现类
controller层
页面展示的垃圾站数据:
写一个弹出框,中再嵌套数据表格即可这样展示。有分页功能,没有做高级查询的,还有恢复功能和彻底删除功能。
4、关于上面没有完成功能的大体原理分析:
分析上面未完成的功能原理:
主页面展示的数据点击删除后,实际上是假删除,只不过是将数据库中的isdelete字段值右1改为了2。
当然;在垃圾站的展示页面上的恢复(批量恢复)和彻底删除功能。
恢复(批量恢复):同样的方法,先根据id查询出来数据后将数据库中的isdelete字段值由2改为1即可。
彻底删除:就是真正的从数据库中删除。执行删除的sql语句即可
5、总结一波
实际上就是就是给表一个字段,哪一个值表示在主页面显示,哪一个值表示在回收站显示。互相转变就是更改字段的值罢了。如果中途要加回收站功能,注意sql语句中的字段不能少。
有时间会加以完善此处