SSM整合Project-Day01-日志删除操作的实现+全选功能

本文介绍了如何在SSM项目中实现日志删除操作,包括Dao层、映射文件配置、Service及实现逻辑、Controller层的处理。在客户端部分,详细讲解了log_list.html页面的测试过程,全选功能的实现,以及解决在取消选择记录后全选状态不及时更新的问题。最后展示了运行结果。
摘要由CSDN通过智能技术生成

一、Dao

//    根据日志id删除日志上的记录
    int deleteObject(@Param("ids") Integer... ids);

二、映射文件-SysLogMapper.xml

    <!--根据日志id删除日志信息-->
    <delete id="deleteObjects">
        delete from sys_logs where id in
        <foreach collection="ids"
                 open="(" close=")"
                 separator=","
                 item="item">
                 #{item}
        </foreach>
    </delete>

三、做一下测试

//	测试日志删除
	@Test
	public void testDeleteObjects(){
	SysLogDao dao=ctx.getBean("sysLogDao", SysLogDao.class);
	int rowCount=dao.deleteObjects(37,38);
	System.out.println(rowCount);

四、service

//    日志删除功能。删除操作删掉了几行      ids日志记录的id
      Integer deleteObjects(Integer... ids);

五、service实现类,思考service功能的逻辑

1.参数有效性验证
2.执行删除操作
3.验证并返回结果

@Override
    public Integer deleteObjects(Integer... ids) {
        //1.参数有效性验证
        if(ids.length==0&&ids==null){
            throw new IllegalArgumentException("请选中要删除的记录");
        }
        //2.执行删除操作    返回要删除的行数    【若tomcat服务器与删除执行发生断连接】
        int rows=0;
        try{
            rows = sysLogDao.deleteObjects(ids);
        }catch (Throwable e){
            e.printStackTrace();
//          给运维人员发短信并报警
            throw new ServiceException("系统维护中,稍等片刻");
        }

        //3.验证并返回结果
        if(rows==0){
            throw new ServiceException("这个记录不存在");
        }
        return rows;
    }

六、Controller

    //    映射地址
    @RequestMapping("doDeleteObjects")
    @ResponseBody
    public JsonResult doDeleteObjects(Integer... ids){
        sysLogService.deleteObjects(ids);
        return new JsonResult("delete ok");
    }

七、测试一下吧

访问:http://localhost:8080/ssmday4/log/doDeleteObjects?ids=35,36
结果:
在这里插入图片描述
在这里插入图片描述

以上。服务器端完成。

以下。客户端:

一、log_list.html

 $(function(){
	 $("#pageId").load("doPageUI",doGetObjects);
	 //id用#  类型用.
	 //用on    :btn-search元素上注册一个click
	 //doQueryObjects 不要小括号,用小括号表示会直接调用。
	 $(".input-group-btn")
			 .on("click","btn-search",doQueryObjects)
			 .on("click",".btn-delete",doDeleteObjects)
	 ;
 });
其中的:`	 .on("click",".btn-delete",doDeleteObjects)`
//删除选中的日志内容
 function doDeleteObjects() {
	// 1.获取选中的记录id
	 var ids=doGetCheckedIds();    //array
	 if(ids.length==0){
	 	alert("请先选中");
	 	return;
	 }
	 console.log("ids",ids.toString());
	 //  2.定义参数
	 var params={"ids":ids.toString()};//1,2,3,4 不toString只显示一个数组
	//  3.定义url
	 var url="log/doDeleteObjects";
	 // 4.发送异步请求 并执行删除操作
	 $.post(url,params,function (result) {
		  if(result.state==1){
		  	alert(result.message);
		  	doGetObjects();//再次查询,刷新页面
		  }else{
		  	alert(result.message);
		  }
	 })
 };
 
 function doGetCheckedIds() {
 	//定义数组存储选中的id值
	 var array=[];
 	//获取tbody中所有的checkbox对象
	 $("#tbodyId input[type='checkbox']")
			 //迭代所有的checkbox
			 .each(function () {    //发现checkbox则回调此函数
				   if($(this).prop("checked")){
					   //如果是true,用push方法用于向数组中放数据
					   array.push($(this).val())
				   }
			 });
	 return array;
 }

二、测试一下

1.一个都不选
在这里插入图片描述
2.选删119
在这里插入图片描述
3.删除2条记录
在这里插入图片描述

三、全选功能

1.找到checkbox的id
在这里插入图片描述

$(function(){
	 $("#pageId").load("doPageUI",doGetObjects);
	 //id用#  类型用.
	 //用on    :btn-search元素上注册一个click
	 //doQueryObjects 不要小括号,用小括号表示会直接调用。
	 $(".input-group-btn")
			 .on("click","btn-search",doQueryObjects)
			 .on("click",".btn-delete",doDeleteObjects);
	 //对thead的操作 全选
	 $("thead").on("change","#checkAll",
			 doChangeTBodyCheckBoxState);
 });
 
 //全选   更新tbody中的checkBox对象的状态
 function doChangeTBodyCheckBoxState() {
 //	获取当前点击对象tbody中的checkBox对象的状态
	 var state=$(this).prop("checked");
	// 将此状态应用到tbody中的checkbox对象上

	 $("#tbodyId input[type='checkbox']")
			 .each(function () {
				 $(this).prop("checked",state);
			 });
	// 
 }

2.测试:
在这里插入图片描述

四、问题:当取消了列表中的一条记录,全选勾选应当立即消失。

解决:

$(function(){
	 $("#pageId").load("doPageUI",doGetObjects);
	 //id用#  类型用.
	 //用on    :btn-search元素上注册一个click
	 //doQueryObjects 不要小括号,用小括号表示会直接调用。
	 $(".input-group-btn")
			 .on("click","btn-search",doQueryObjects)
			 .on("click",".btn-delete",doDeleteObjects);
	 //对thead的操作 全选
	 $("thead").on("change","#checkAll",
			 doChangeTBodyCheckBoxState);
	 //当全选中的一条记录不勾选了,全选勾选消失
	 //让tbody中的checkbox状态的变化影响thead中的checkbox状态
	 $("#tbodyId").on("change",".cBox",
			 doChangeTHeadCheckBoxState);
 });
// 让tbody中的checkbox状态的变化影响thead中的checkbox状态
 function doChangeTHeadCheckBoxState() {
	 var flag=true;
	 //1.获取所有tbody中的checkbox对象状态“与”结果
	 $("#tbodyId input[type='checkbox']")
			 .each(function(){
				 flag=flag&&$(this).prop("checked");
			 })
	 //2.将tbody中的checkbody的值福遇到thead中的值
	 $("#checkAll").prop("checked",flag);
 }

五、运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值