在写项目的时候,由于数据比较多,删除数据的时候一个一个的点击删除比较麻烦,所以准备在项目中使用批量删除的功能。批量删除在项目中的实现比较简单。
批量删除功能的实现主要难度是在前端,在后端只需要用mybatis做一个批量删除的接口就行。
1.增加表格数据勾选框
如果要在表格数据中实现批量删除,那么最基本的需要一个勾选框,选中了数据之前的勾选框才会进行删除。因此我们首先要在表格中加入勾选框,代码如下:
1 | <table class="table table-border table-bordered table-bg table-hover table-sort"> |
数据表格的代码如上所示,勾选框采用的是input框,主要是用name=”subCheck”做标识。
2.判断是否选中了数据
当我们点击了批量删除按钮之后,首先应该判断是否选中的数据,选中了之后才能进行下一步操作,没有选中数据则不进行下一步操作,并给出相应操作的提示。
1 | var checkNum=$("input[name='subCheck']:checked").length; |
在这里,layerOpen是我自己封装的一个方法。功能特别简单,主要就是一个弹窗,弹出自定义的输出内容。代码如下:
1 | function layerOpen(msg) { |
3.遍历所有的勾选框
1 | //批量选择 |
先弹出一个确认框,当点击确认时才进行下一步的操作,否则直接退出。遍历当前页面上的每一个勾选框,遇到第一个勾选框选中时,在checkedId中存放这个勾选框的value值,也就是数据的UUID值,刚好这个值就是我们后台需要的,然后将定义的标识符flag定为false。之后继续遍历,遇到第二个勾选框被勾选时,记录数据的UUID,同时加一个”,”进行分隔。
4.将选中的数据UUID通过ajax传到后台
1 | $.ajax({ |
5.在后台对数据库数据进行操作
1 | //批量删除员工信息 |
因为后台传过来的是一个字符串,所以我们首先将字符串切割开来放到一个数组里面,最后将数组转化为list集合,直接传递给mybatis完成删除操作即可。
1 | <delete id="batchDelete" parameterType="java.util.List"> |
后台的操作比较简单,但是因为涉及到多张表关联,在这里我用到的是将多张表关联在一起然后匹配字段一起删除,比起级联删除,这样对资源池的消耗比较小。
6.对页面进行刷新,重新加载数据库中的数据
1 | /** |
以上操作即可实现数据的批量删除,操作比较简单,主要是为了记录下这个过程。