SpringBoot实战项目(十二)--用户批量删除功能实现

页面构建--批量删除功能事件实现

  1 <!DOCTYPE html>
  2 <html class="x-admin-sm" xmlns:th="http://www.thymeleaf.org">
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>欢迎页面-X-admin2.2</title>
  6           <header th:replace="header.html"></header>
  7     </head>
  8     <body class="childrenBody">
  9         <div class="x-nav">
 10           <span class="layui-breadcrumb">
 11             <a href="">用户列表</a>
 12             <a>
 13               <cite>【云深不知处】</cite></a>
 14           </span>
 15           <a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
 16             <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
 17         </div>
 18     <div class="layui-card-body ">
 19         <div class="layui-card-header" style="display: inline">
 20              <button class="layui-btn layui-btn-danger" onclick="delAll()" permission="sys:user:del"><i class="layui-icon"></i>批量删除</button>
 21              <button class="layui-btn" onclick="xadmin.open(‘添加用户‘,‘/user/add‘)"><i class="layui-icon"></i>添加</button>
 22         </div>
 23
 24            <form class="layui-form  layui-col-space5" style="display: inline">
 25              <div class="layui-inline layui-show-xs-block">
 26                 <input type="text" name="userName"  placeholder="请输入用户名" autocomplete="off" class="layui-input">
 27              </div>
 28              <div class="layui-inline layui-show-xs-block">
 29                  <button class="layui-btn"  lay-submit="" lay-filter="search"><i class="layui-icon"></i></button>
 30              </div>
 31            </form>
 32
 33         <div class="layui-card-body ">
 34             <table class="layui-hide" id="table" lay-filter="member"></table>
 35         </div>
 36          <div class="layui-card-body ">
 37              <script type="text/html" id="barDemo">
 38                      <a class="layui-btn layui-btn-xs" lay-event="edit" permission="sys:user:edit">编辑</a>
 39                      <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" permission="sys:user:del">删除</a>
 40              </script>
 41          </div>
 42     </div>
 43 </body>
 44     <script>
 45             layui.use([‘table‘], function(){
 46                 var table = layui.table;
 47                 form = layui.form;
 48                 //第一个实例
 49                 table.render({
 50                     elem: ‘#table‘
 51                     ,url: ‘/user/list‘ //数据接口
 52                     ,toolbar: ‘#toolbarDemo‘ //开启头部工具栏,并为其绑定左侧模板
 53                     ,page: true //开启分页
 54                     ,id:‘users‘
 55                     ,response: {
 56                         countName: ‘count‘, //规定数据总数的字段名称,默认:count
 57                         dataName: ‘datas‘ //规定数据列表的字段名称,默认:data
 58                     }
 59
 60                     ,cols: [
 61                         [ //表头
 62                             {type: ‘checkbox‘,fixed: ‘left‘}
 63                             ,{field: ‘id‘, title: ‘ID‘, align:‘center‘, width:60,sort: true}
 64                             ,{field: ‘userName‘, title: ‘用户名‘, width:80}
 65                             ,{field: ‘nickName‘, title: ‘昵称‘,width:120}
 66                             ,{field: ‘sex‘, title: ‘性别‘ ,width:75,align:‘center‘,sort: true,templet:function (s) {
 67                                 return s.sex == ‘1‘?‘男‘:‘女‘;
 68                             }}
 69                             ,{field: ‘telephone‘, title: ‘手机‘, width:120}
 70                             ,{field: ‘email‘, title: ‘邮箱‘,width:165}
 71                             ,{field: ‘status‘, title: ‘状态‘, width:60,align:‘center‘, templet:function (d) {
 72                                 return d.status == ‘1‘?‘启用‘:‘禁用‘;
 73                             }}
 74                             ,{field: ‘birthday‘, title: ‘生日‘,width:105}
 75                             ,{title:‘操作‘, toolbar: ‘#barDemo‘}
 76                         ]
 77                     ],
 78                     done:function() {
 79                         checkPermission()
 80                     }
 81                     });
 82
 83           delAll = function(){
 84             var checkStatus = table.checkStatus(‘users‘);
 85             if(checkStatus.data.length==0){
 86                 parent.layer.msg(‘请先选择要删除的用户!‘, {icon: 2});
 87                 return ;
 88             }
 89             var ids = "";
 90             for(var i=0;i<checkStatus.data.length;i++){
 91                 ids += checkStatus.data[i].id+",";
 92             }
 93             layer.confirm(‘确定要删除吗?‘, function(index){
 94                 //parent.layer.msg(‘删除中...‘, {icon: 16,shade: 0.3,time:5000});
 95                 $.post(‘/user/deleteUsersByCheck‘,
 96                 {‘ids‘:ids},
 97                 function(data){
 98                     layer.closeAll(‘loading‘);
 99                     if(data.code==200){
100                         layer.alert("批量删除成功!", {icon: 1},function (index1) {
101                             layer.close(index1);
102                             table.reload(‘users‘);
103                             //xadmin.father_reload();
104                         });
105                     }else{
106                         parent.layer.msg(‘批量删除失败!‘, {icon: 2,time:3000,shade:0.2});
107                         table.reload(‘users‘);
108                     }
109                 }
110                 )}
111             );
112         }
113
114           //监听工具条
115             table.on(‘tool(member)‘, function(obj){
116                 var data = obj.data;
117                 if(obj.event === ‘del‘){
118                     layer.confirm(‘真的删除行么‘, function(index){
119
120                         $.ajax({
121                             url:"/user/delete",
122                             type:"DELETE",
123                             data:{id:data.id},
124                             dataType:‘json‘,
125                             success:function(result){
126                                 layer.alert("删除成功", {icon: 1},function (index1) {
127                                     layer.close(index1);
128                                     //xadmin.father_reload();
129                                     table.reload(‘table‘);
130                                 });
131                             },
132                         });
133
134                     });
135                 } else if(obj.event === ‘edit‘){
136                     xadmin.open(‘编辑用户信息‘,‘/user/edit/?id=‘+data.id);
137                 }
138             });
139
140             //搜索
141             form.on(‘submit(search)‘, function(data){
142                 var userName = data.field.userName;
143                 table.render({
144                      elem: ‘#table‘
145                     ,url: ‘/user/findAllByUserNamePage‘//数据接口
146                     ,type:"GET"
147                     ,page: true //开启分页
148                     ,where:{
149                         "userName":userName
150                     }
151                     ,response: {
152
153                         countName: ‘count‘, //规定数据总数的字段名称,默认:count
154                         dataName: ‘datas‘ //规定数据列表的字段名称,默认:data
155                     }
156                      ,cols: [
157                         [ //表头
158                             {type: ‘checkbox‘,fixed: ‘left‘}
159                             ,{field: ‘id‘, title: ‘ID‘, align:‘center‘, width:60,sort: true}
160                             ,{field: ‘userName‘, title: ‘用户名‘, width:80}
161                             ,{field: ‘nickName‘, title: ‘昵称‘,width:120}
162                             ,{field: ‘sex‘, title: ‘性别‘ ,width:75,align:‘center‘,sort: true,templet:function (s) {
163                                 return s.sex == ‘1‘?‘男‘:‘女‘;
164                             }}
165                             ,{field: ‘telephone‘, title: ‘手机‘, width:120}
166                             ,{field: ‘email‘, title: ‘邮箱‘,width:165}
167                             ,{field: ‘status‘, title: ‘状态‘, width:60,align:‘center‘, templet:function (d) {
168                                 return d.status == ‘1‘?‘启用‘:‘禁用‘;
169                             }}
170                             ,{field: ‘birthday‘, title: ‘生日‘,width:105}
171                             ,{title:‘操作‘, toolbar: ‘#barDemo‘}
172                         ]
173                     ]
174                 });
175                 return false;
176             });
177             checkPermission();
178         });
179         </script>
180 </html>

user-list.html

UserController

UserService

UserServiceImpl

然后分别调用userRoleDao.deleteByUserId()和userDao.deleteUser()方法

测试----

原文地址:https://www.cnblogs.com/wx60079/p/12696067.html

时间: 2024-10-11 11:33:03

SpringBoot实战项目(十二)--用户批量删除功能实现的相关文章

Android项目实战(十二):解决OOM的一种偷懒又有效的办法

原文:Android项目实战(十二):解决OOM的一种偷懒又有效的办法 在程序的manifest文件的application节点加入android:largeHeap=“true” 即可. 对,只需要一句话! 那么这行代码的意思是什么呢? 简单的说就是使该APP获取最大可分配的内存,以便解决OOM问题. 但是.OOM问题出现的原因总得来说有两点: 1.某个手机的内存真的很少 2.代码问题,比如没有处理好Bitmap图片的大小 可以说,出现OOM的情况基本都是第二种情况,那么就需要修改代码,看看哪

Myeclipse/STS 首次在本地部署配置一个Spring MVC 项目 (十二)

1. 在本地新创建一个文件夹 ,做为项目工作空间; 2. 用 Myeclipse 或 STS 进入该文件夹,该文件夹就成为项目的工作空间: 3. 就要进 窗口-首选项,配置: 环境默认编码: 1>. 常规下面 内容类型 .txt 文本 UTF-8 更新 2>. 常规 – 工作空间 , 文本文件编码 3>. 常规 – 编辑器 – 文本编辑器 – 拼写 配置 java JDK 为 项目需要的版本 比如 (1.7) : 配置 Myeclipse 下的 Servers 及 validation 

实例:SSH结合Easyui实现Datagrid的批量删除功能

在我先前的基础上面添加批量删除功能.实现的效果如下 删除成功 通常情况下删除不应该真正删除,而是应该有一个标志flag,但flag=true表示状态可见,但flag=false表示状态不可见,为删除状态.便于日后数据库的维护和信息的查询.因此表结构添加一个flag字段 没有改变的代码这里就不写了,发生改变的代码贴出来 1.因为表结构发生变化.所以对应的Student.java和Student.hbm.xml发生改变 [java] view plaincopy package com.model;

layui表格的批量删除功能

1 // 批量删除功能 2 // 1.得到table选中行内容 3 // 2.得到删除需要的唯一值,一般是id; 4 // 3.将所要删除的项加入到数组中: 5 // 4.判断是否选中: 6 // 5.发送ajax请求,并附带参数id: 7 var $=layui.$,active={ 8 deLink:function () { 9 var checkStatus=table.checkStatus('idTest'), 10 data=checkStatus.data, 11 deList=

SpringBoot实战项目(四)--用户模糊查询以及分页功能实现

根据<from> userName(用户名)搜索... 1 <!DOCTYPE html> 2 <html class="x-admin-sm" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>欢迎页面-X-admin2.2</title> 6 <

mysql进阶 十五 mysql批量删除大量数据

mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wait timeout exceed的错误. 因为这条语句所涉及的记录数太多,因此我们通过LIMIT参数分批删除,比如每10000条进行一次删除,那么我们可以利用 MySQL这样的语句来完成: DELETE FROM s

MP实战系列(十二)之封装方法详解(续二)

继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectById()方法 演示示例: UserEntity user = ud.selectById(33); System.out.println(user.getEmail()); 简单的说明: 如果是在MyBatis中,需要再对应的xml编写这样的sql select column1,column2..

企业级 SpringBoot 教程 (十二)springboot集成apidoc

首先声明下,apidoc是基于注释来生成文档的,它不基于任何框架,而且支持大多数编程语言,为了springboot系列的完整性,所以标了个题. 一.apidoc简介 apidoc通过在你代码的注释来生成api文档的.它对代码没有侵入性,只需要你写好相关的注释即可,并且它仅通过写简单的配置就可以生成高颜值的api接口页面.它基于node.js,所以你需要安装node.js环境.node.js安装.这里就不介绍. 二.准备工作 安装完node.js安装api.doc 通过命令安装: npm inst

用户批量删除脚本

考核内容test[]echo -e for循环思路用户不为root时不可执行删除命令输入为空时提示输入为不存在时提示删除用户成立时删除不成立时用户不存在编辑文件 echo -e 字体颜色设置,可查询字体颜色表普通用户时文件为空时文件不存在时查看删除列表的批量用户成立时不成立时 原文地址:https://blog.51cto.com/14190777/2436838