0817 菜单模块删除按钮补实现
1.dao层
考虑到可能会全删 删完之后必须要先删除子菜单和关系元素
新建一个dao
service层
自动注入加一个dao
@Override
public int deleteObject(Integer id) {
//1.参数校验
if(id==null||id<1)throw new IllegalArgumentException("id值无效");
//2.判定是否有子菜单
int childCount=sysMenuDao.getChildCount(id);
if(childCount>0)throw new ServiceException("请先删除子菜单");
//3.执行菜单角色关系数据的删除
sysRoleMenuDao.deleteObjectByMenuId(id);
//4.删除自身信息
int rows=sysMenuDao.deleteObject(id);
//5.验证结果并返回
if(rows==0)throw new ServiceException("记录可能已经不存在");
return rows;
}
controller层
效果实现
尝试删除类目管理
再去删除4项
无子菜单了
删除已实现
如上图 关系元素也被认定为是子菜单元素 都要删干净才可以实现
自己尝试论证
没错的 但是子菜单是所有的大项 自己去记住
mvc的jsonresult理解
https://www.cnblogs.com/lmfeng/p/3596175.html
JSON
1.dept 部门管理复制粘贴 逻辑都一样
有了id后 对应修改
好了 尝试去实现
如下图 不够严谨
数据层
每天写一个sql xml 后面也自己总结 语句 尤其是#{}
**
开始角色管理 业务设计
**
一对多 多对多
如下 多对多
分层目的主要将复杂问题简单化,实现各司其职,各尽所能。
1.客户端
只需要改starter就行
因为(自我重复)
和日志模块一模一样
1.pojo 有严格的 映射 一一对应关系
2.dao层
pageSize 查询几条(页面大小)
mapper
3.业务逻辑层 service层
去改
5.controller层
发现 和日志模块差不多
实现 在客户端页面没数据是因为没写controller层
写上就好了
错误实现 类型
检查dao service 属性和类型! 晚上自己试错(over)
总结如上图错误
pageSize不需要在业务逻辑层写 因为后面要把对应的一条条查出来
总结 impl下报错 去回看dao 和对应service接口就行可
客户端页面
复选框更多功能实现 nocheckInherit
晚上 学会自己去查 前端 (有空去 必要性不足)
下一步 去实现修改数据
前提 先实现保存按钮的实现
pojo去对应
数组是
(1)自身信息的数据层 dao
(2)中间关系数据表(角色对应多个菜单管理数据)的对应dao 一对多
这里则是可变参数(和数组 二选一)
Mapper层
(1)自身信息的数据层 dao下的mapper层
parameterType可省略
为什么要有两个关系数据
目的因为一个角色要对应多个菜单 要新建一个中间表的映射文件
找回以前的活动模块 对应回看学习
所以后面是属于二次使用写法
(2)中间关系数据表(角色对应多个菜单管理数据)的对应dao 一对多
目的因为一个角色要对应多个菜单 要新建一个中间表的映射文件
ps
看得舒服 改回来
3.service层
一对多的业务思想
注入两个表 一个角色自身数据表 一个新的中间关系表
如果先保存关系数据 再去保存自身信息 就获取不到id了
保存的正确顺序 先保存自身信息 再去保存关系数据 就获取entity里面的id
如上字+图 删除业务则相反
先删除关系数据 再去删除自身信息
3.controller层
4.雷哥的实现 html 客户端层
11.44晚上补全 缺了一点 报错的理解(over 如上三图)
雷哥修改完之后
上午总结
自己去实现保存按钮 (复制粘贴理解)
1.dao层
各自对应的Mapper
2.service层
3.controller层
4.实现 html 客户端页面
思考老师出现那个错误 remark和note的备注问题 晚上(over)
下午实现修改功能 关键 显示以往数据在上面
自己的疑问 从数据库还是从页面的tr td数据里面取?
修改按钮
1.pojo 封装查询的数据
2.dao层
mapper
基于id去查询
一个一个表去查 取出来 封装 然后显示在客户端层面
成功实现了 晚上补图
第二个方法 修改的
service方案2
晚上回看 14.52分之前
resultMap是自己去定义规则
映射 sql的嵌套
第三种
ofType是集合的类型 property是集合
不理解多表关联查询和sql嵌套查询
<!-- 从当前表中基于查询角色自身信息(对应方案3-多表关联查询) -->
<resultMap type="com.cy.pj.sys.pojo.SysRoleMenu"
id="sysRoleMenu">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="note" column="note"/>
<collection property="menuIds" ofType="integer">
<result column="menu_id"/>
</collection>
</resultMap>
<select id="findById"
resultMap="sysRoleMenu">
select r.id,r.name,r.note,rm.menu_id
from sys_roles r left join sys_role_menus rm
on r.id=rm.role_id
where r.id=#{id}
</select>
<!-- 从当前表中基于查询角色自身信息(对应方案2-select嵌套) -->
<!-- resultMap是mybatis中非常重要的一种映射元素,用于实现mybatis中的高级映射:
应用场景:
1)表中字段与类中属性名字不一致
2)sql嵌套查询
3)多表关联查询 -->
<!--
<resultMap type="com.cy.pj.sys.pojo.SysRoleMenu"
id="sysRoleMenu">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="note" column="note"/>
<collection property="menuIds"
column="id"
select="com.cy.pj.sys.dao.SysRoleMenuDao.findMenuIdsByRoleId">
</collection>
</resultMap>
<select id="findById"
resultMap="sysRoleMenu">
select id,name,note
from sys_roles
where id=#{id}
</select>
-->
晚上
客户端 html 展开或者收起
zTree的展开或收起
修改页面效果的程序 页面显示数据部分
回到显示修改页面的全部信息后 点击更新按钮
1.dao与mapper
还得更新关系表数据
先删除 后添加=更新
service层
controller层
修改页面效果的程序 保存按钮部分
1.dao mapper
mapper
2.service层
3.controller层
4.客户端页面 html
总结
实现绑定页面 更新出来
实现删除按钮
1.dao和mapper
数据移除后
角色页面
分页查询
用到了分页插件 嵌套查询