基于SSM+layui实现用户删除功能

实现原理:通过索引id的值编写delete删除语句。jsp界面效果:layer.confirm弹出提示框,并通过ajax中post请求实现异步提交、页面不刷新,提高效率

一、效果实现

在这里插入图片描述

二、数据准备

user表

在这里插入图片描述

三、代码实现

1、bean层—UserInfo.java

@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserInfo implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -6943242013517012358L;
	private Integer id;
	private String userId;
	private String userName;
	private String password;
	@JsonFormat(timezone = "GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
	private Date registerTime;
	private Boolean state;
}

2、mapper层—UserInfoMapper.java UserInfoMapper.xml

2.1 UserInfoMapper.java
public interface UserInfoMapper {
    public void deleteUserInfoById(Integer id);
}
2.2 UserInfoMapper.xml
<delete id="deleteUserInfoById" parameterType="UserInfo">
		delete from user where id=#{id}
</delete>

3、service层—UserInfoService.java UserInfoServiceImpl.java

3.1 UserInfoService.java
public interface UserInfoService {
    public void deleteUserInfoById(Integer id);
}
3.2 UserInfoServiceImpl.java
@Transactional
@Service
public class UserInfoServiceImpl implements UserInfoService{
	
	@Autowired
	private UserInfoMapper userInfoMapper;
    
    @Override
	public void deleteUserInfoById(Integer id) {
		userInfoMapper.deleteUserInfoById(id);
	}
	
}

4、controller层—UserInfoController.java

@Controller
public class UserInfoController {

	@Autowired
	private UserInfoService userInfoService;
    
    @RequestMapping("/deleteUserInfoById")
	public void deleteUserInfoById(Integer id) {
		userInfoService.deleteUserInfoById(id);
	}
	
}

5、jsp界面—list_user.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta charset="utf-8">
<title>用户列表</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
	content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="layui/css/layui.css" media="all">
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>

	<table class="layui-hide" id="test" lay-filter="test"></table>
	<script type="text/html" id="switchTpl">
  <!-- 这里的 checked 的状态只是演示 -->
  <input type="checkbox" name="state" value="{{d.id}}" lay-skin="switch" lay-text="管理员|用户" lay-filter="stateDemo" {{ d.state == true ? 'checked' : '' }} >
	</script>

	<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData"><i class="layui-icon">&#xe615;</i> 搜索用户</button>
    <button class="layui-btn layui-btn-sm" lay-event="register"><i class="layui-icon">&#xe61f;</i> 新增用户</button>
    <button class="layui-btn layui-btn-sm" lay-event="deleteSelectedUsers"><i class="layui-icon">&#xe640;</i>批量删除</button>
  </div>
</script>

	<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>


	<script src="js/jquery-3.4.1.js" charset="utf-8"></script>
	<script src="layui/layui.all.js" charset="utf-8"></script>
	<!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 -->
	<script>
	
		layui.use(['table','form'], function() {
			var table = layui.table,
			form = layui.form;
			table.render({
				elem : '#test',
				url : 'findAllUsers',
				toolbar : '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
				,
				defaultToolbar : [ 'filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
					title : '提示',
					layEvent : 'LAYTABLE_TIPS',
					icon : 'layui-icon-tips'
				} ],
				title : '用户数据表',
				cols : [ [{
					type : 'checkbox',
					fixed : 'left'
				},{
					field : 'id',
					title : 'ID',
					name : 'ids',
					width : 80,
					fixed : 'left', 
					unresize : true,
					sort : true
				},  {
					field : 'userId',
					title : '用户ID',
					width : 150
				},{
					field : 'userName',
					title : '用户名',
					width : 150
				}, {
					field : 'registerTime',
					title : '创建日期',
					width : 200
				}, {
					field : 'state',
					title : '状态',
					width : 120,
					templet : '#switchTpl',
					unresize : true
				}, {
					fixed : 'right',
					title : '操作',
					toolbar : '#barDemo',
					width : 150
				} ] ],
				page : true
			});

			//头工具栏事件
			table.on('toolbar(test)', function(obj) {
				var checkStatus = table.checkStatus(obj.config.id);
				switch (obj.event) {
				case 'getCheckData':
					var data = checkStatus.data;
					layer.alert(JSON.stringify(data));
					break;
				case 'register':
					/* window.location.href = 'register.jsp'; */
					layer.open({
						type:2,
						title:'新增用户',
						area:['500px','400px'],
						shade:0.3,
						maxmin:true,
						offset:'auto',
						anim:2,
						content:'register.jsp'
					});
					break;
				case 'deleteSelectedUsers':
					var data = checkStatus.data;
					if (data.length>0) {
						layer.confirm('您确定要删除选中的用户吗?',function(index){
							var ids = [];
							data.forEach(function(row,i){
								ids.push(row.id);
							});
							$.post('deleteByIds',{ids:ids+''},function(msg,status){
								if(status='success'){
									window.location.reload();
								}else{
									layer.msg(msg);
								}
							});
							layer.close(index);
						});
					}else{
						layer.msg('至少要选择一个用户');
					}
					break;

				//自定义头工具栏右侧图标 - 提示
				case 'LAYTABLE_TIPS':
					layer.alert('这是工具栏右侧自定义的一个图标按钮');
					break;
				}
				;
			});

			//监听行工具事件
			table.on('tool(test)', function(obj) {
				var data = obj.data;
				console.log(obj)
				if (obj.event === 'del') {
					layer.confirm('真的删除行么', function(index) {
						$.post('deleteUserInfoById', {
							id : data.id
						});//异步提交,页面不刷新,效率提高
						obj.del();
						layer.close(index);
					});
				} else if (obj.event === 'edit') {
					layer.open({
						  type: 2, 
						  title:'编辑用户',
						  area:['500px','400px'],
						  shade:0.3,
						  maxmin:true,
						  offset:'auto',
						  anim:2,
						  content: 'edit_user.jsp?id='+data.id //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
						}); 
				}
			});
			
		 	//监听状态操作
			form.on('switch(stateDemo)', function(obj) {
				var jsonData = {id:this.value,state:obj.elem.checked};
				$.ajax({
					type:'post',
					url:'updateById',
					data:JSON.stringify(jsonData),
					contentType:'application/json',
					dataType:'json',
					success:function(data,status){
						console.log('success:'+data);
						if (data=='1') {
							layer.msg('状态已修改');
						}
					},
					error:function(data){
						console.log('data:'+data);
					}
				});
			}); 		
		});	
	</script>
</body>
</html>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值