SSM整合ProjectDay02-菜单管理:内容删除操作

在这里插入图片描述
在这里插入图片描述

一、Dao层

1.SysMenuDao中

public interface SysMenuDao {

//    删除操作        统计此菜单对应子菜单的个数 返回值个数【如果子不为0,则不能直接删除
int getChildCount(Integer id);
//基于菜单的id执行菜单的删除操作
int deleteObject(Integer id);

2.新建Dao-SysRoleMenuDao

/**
 * @author : zhenzhen
 * @date : 2019/3/15 22:34
 * 菜单对应数据删除
 */
public interface SysRoleMenuDao {

    //    基于菜单id 删除角色和菜单的关系数据
    int deleteObjectsByMenuId(Integer menuId);
}

二、mapper.xml–重点难点

mapper1

<!--基于菜单id统计子菜单的个数-->
    <select id="getChildCount" resultType="int">
          select count(*)
          from sys_menus
          where parentId=#{id}
    </select>

    <!--基于子菜单查询后,符合操作规定进行删除-->
    <delete id="deleteObject">
        delete from sys_menus where id=#{id} 
    </delete>

在这里插入图片描述

mapper2

<mapper namespace="com.jt.sys.dao.SysRoleMenuDao">

    <!--删除:基于菜单id 删除角色和菜单的关系数据
     int deleteObjectsByMenuId(Integer menuId);-->
    <delete id="deleteObjectsByMenuId">
        delete from sys_role_menus
        where menu_id=#{menu_id}
    </delete>

</mapper>

三、业务层service 写逻辑

service

//    删除菜单 看是否有子菜单   :有子菜单不允许删除。
//    无:1.删除sys_menu子菜单信息 2.删除 sys_role_menu中对应关系
//    返回删除条数 -int类型
    int deleteObject(Integer id);

serviceImpl

    @Autowired
    private SysMenuDao sysMenuDao;  //关联sys_menu表
    @Autowired
    private SysRoleMenuDao sysRoleMenuDao;//关联sys_role_menu表

    @Override
    public int deleteObject(Integer id) {
//        验证参数有效性
        if(id==null||id<1){
            throw new IllegalArgumentException("参数无效");
        }
//        基于id判定是否有子菜单
        int child = sysMenuDao.getChildCount(id);
        if(child>0){
            throw new ServiceException("请先删除子菜单");
        }
//        基于id删除菜单表中记录(无)
        int rows = sysMenuDao.deleteObject(id);

//        基于id删除菜单角色表中记录
          sysRoleMenuDao.deleteObjectsByMenuId(id);
//        返回删除结果
        return rows;
    }

四、Controller

    @RequestMapping("doDeleteObejct")
    @ResponseBody
    public JsonResult doDeleteObejct(Integer id){
        sysMenuService.deleteObject(id);
        return new JsonResult("delete ok!");
    }

五、测验一下!
访问:http://localhost:8080/ssmday4/menu/doDeleteObejct?id=24
结果:
在这里插入图片描述
访问:http://localhost:8080/ssmday4/menu/doDeleteObejct?id=45
结果:
在这里插入图片描述

客户端

一、menu.list

$(function(){
	doGetObjects();
	//按钮事件注册
	$(".input-group-btn")
	.on("click",".btn-delete",doDeleteObject);
});

function doDeleteObject(){
   //1.获取选中的记录id,并进行判定
   var id=doGetCheckedId();
   if(!id){
	   alert("请先选中");
	   return;
   }
   //2.定义参数
   var params={"id":id};
   //3.定义url
   var url="menu/doDeleteObject"
   //4.发送异步请求执行删除操作
   $.post(url,params,function(result){
	   if(result.state==1){
		   alert(result.message);
		   doGetObjects();
	   }else{
		   alert(result.message);
	   }
   })
}
//获取选中的记录的id值
function doGetCheckedId(){
	//1.获取选中的记录
	var selections=$("#menuTable")
	//bootstrapTreeTable是treeGrid插件内部定义的jquery扩展函数
	//getSelections为扩展函数内部要调用的一个方法
	.bootstrapTreeTable("getSelections");
	//打印一下试试
	console.log(selections);
	//2.对记录进行判定
	if(selections.length==1)
	return selections[0].id;
}

测试:
删除47父菜单:
在这里插入图片描述
删除47子菜单:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值