项目搭建+删除(单/批)

server/2024/12/24 3:00:25/

一 : 删除没有单独的页面,在列表页面写

二 : 删除在列表的页面

1.删除(单/双)的按钮

        ① : 在列表文档就绪函数的ajax里面,成功回调函数追加数据里写删除按钮

                注意点 : 删除/修改/回显都是根据id来的,记得传id

        ② : 批删给批删按钮,定义批删的方法

one : 示例(单删) : 
//循环追加表数据for (let x of arr) {$("#table").append(`<tr><td><input type="checkbox" class="ck" value="\${x.userId}"></td><td>\${x.userId}</td><td>\${x.userName}</td><td>\${x.userState==0?'启用':'禁用'}</td><td><img src="/file/showImg?imgUrl=\${x.imgUrl}" alt="" height="100" width="75"></td><td>\${x.userDel}</td><td>\${x.userTime}</td><td><input type="button" value="删除" onclick="delOne(\${x.userId})"><input type="button" value="修改" onclick="userUpd(\${x.userId})"></td>/tr>`)}
tow : 示例(批删按钮)
<%--批删按钮--%>
<input type="button" value="批删" onclick="delAll()">

2.给(单删)绑定js事件

        ① : 先判断
        ② : 添加友情提示 : 弹出确认删除的警告框
        ③ : ajax

                        删除走的是路径传参,不用写请求方式,传id

                        删除成功走200,刷新,回列表页面

示例 : 

/*** 单删*/function delOne(userId) {//判断if (!userId){alert("请先输入")//结束return}if (confirm("确定要删除吗")){//ajax$.ajax({url:"/user/userDel?userId="+userId,type:"post",dataType: "json",success(res) {console.log(res)if (res===200){//刷新location.reload()alert("删除成功")//跳转页面location.href="list.jsp"}}})}}

3.给(批删)写js事件

        ① : 定义数组
        ② : 获取选中的复选框
        ③ : 获取选中复选框的值
        ④ : 添加进数组里
        ⑤ : 将数组转换成字符串
        ⑥ : 调用单删的方法
//批删function delAll() {//定义数组let arr=[];//获取选中的复选框$(".ck:checked").each(function () {//获取被选中的复选框的值let userId =$(this).val()//添加进数组里arr.push(userId)})//将数组转字符串let s = arr.join(",");//调用单删除方法delOne(s)}

4.全选/全不选

//全选/全不选$(document).on('click',"#check",function () {$('.ck').prop("checked",this.checked)})

 三 : 删除的Controller

1. 接参 : 接路径传参传过来的id

2. 传给service 带着id传过去

3. 响应 200

        注意点 : 单删/批删走一个Controller,写一个就可以了

示例 : 

/*** 删除*/protected void userDel(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//接参String userId = req.getParameter("userId");//传给serviceservice.userDel(userId);//响应resp.getWriter().println(JSONObject.toJSONString(200));}

四 : 删除service层

1.调用dao层方法,处理返回值 (单/批走一个service)

/*** 删除* @param userId*/@Overridepublic void userDel(String userId) {//调用方法userDao.userDel(userId);}

五 : dao层

1.定义sql    2.执行sql

                ① : 单删的sql语句
/*** 删除* @param userId*/@Overridepublic void userDel(String userId) {//定义sql  in ("+userId+") String sql="UPDATE t_user SET user_del=1 WHERE user_id=? ";//打印System.out.println(sql);//执行sqlbaseUpdate(sql,userId);}
                ② : 批删的sql语句
/*** 删除* @param userId*/@Overridepublic void userDel(String userId) {//定义sqlString sql="UPDATE t_user SET user_del=1 WHERE user_id in ("+userId+") ";//打印System.out.println(sql);//执行sqlbaseUpdate(sql);}


http://www.ppmy.cn/server/152646.html

相关文章

POD 存储、PV、PVC

目录 容器如何持久化存储&#xff1f; PV和PVC 为什么不能直接在 Pod 或容器中存储数据&#xff1f; 什么是 PV和 PVC&#xff1f; 可以使用本地磁盘空间创建PV吗&#xff1f; 如何让客户端通过ftp上传到远端服务器的POD里面&#xff1f; 另一个POD想访问ftp的POD里面的…

spring mvc | servlet :serviceImpl无法自动装配 UserMapper

纯注解SSM整合 解决办法&#xff1a; 在MybatisConfig添加 Configuration MapperScan("mapper")

网络安全怎么学习

当我们谈论网络安全时&#xff0c;我们正在讨论的是保护我们的在线空间&#xff0c;这是我们所有人的共享责任。网络安全涉及保护我们的信息&#xff0c;防止被未经授权的人访问、披露、破坏或修改。 一、网络安全的基本概念 网络安全是一种保护&#xff1a;它涉及保护我们的设…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样&#xff0c;安装到2%一定会卡住&#xff0c;如果你不幸用了这个那真是遭老罪了 环境&#xf…

RK3588 , mpp硬编码yuv, 保存MP4视频文件.

RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件.

34 Opencv 自定义角点检测

文章目录 cornerEigenValsAndVecscornerMinEigenVal示例 cornerEigenValsAndVecs void cornerEigenValsAndVecs(InputArray src, --单通道输入8位或浮点图像OutputArray dst, --输出图像&#xff0c;同源图像或CV_32FC(6)int blockSize, --邻域大小值int ape…

【前端面试】list转树、拍平, 指标,

这个题目涉及的是将一组具有父子关系的扁平数据转换为树形结构&#xff0c;通常称为“树形结构的构建”问题。类似的题目包括&#xff1a; 1. 组织架构转换 给定一个公司的员工列表&#xff0c;每个员工有 id 和 managerId&#xff0c;其中 managerId 表示该员工的上级。任务…

Flink执行模式(批和流)如何选择

DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…