您的位置:首页 > 其它

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

2019-03-16 00:56 169 查看


一、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子菜单:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐