菜单管理(增Ztree的加载,删,改操作)
菜单管理页面是采用树结构(TreeGrid)方式进行呈现.
菜单新增页面采用ztree的方式进行呈现
菜单业务分析设计
背景分析
几乎所有软件都需要一个操作界面,通过界面中的一些选项或按钮操作具体的业务,这些选项和按钮我们通常称之为菜单.菜单是资源外在的一种表现形式,通过菜单操作我们系统中的资源.
业务设计分析
在数据库对应的表中设计并存储所有菜单信息,每个菜单可能都有一个对应的url,基于这个url可以找到对应的资源,进而可以访问和操作这些资源.其具体表的设计如下:
业务原型设计分析
基于菜单需求设计菜单的列表页面,如图所示:
基于菜单需求设计菜单编辑页面,如图所示:
业务核心API设计分析
Pojo (SysMenu)
Dao (SysMenuDao)
Service (SysMenuService,SysMenuServiceImpl)
Controller (SysMenuController)
菜单数据查询设计及实现
业务分析
将数据库中菜单(SysMenu)表中的信息查询出来,然后在客户端以树结构(TreeGrid)方式进行呈现.
服务端设计及实现
Pojo对象设计
通过此对象封装菜单相关信息
Dao 接口及方法设计
定义菜单数据接口及数据查询方法
创建SysMenuMapper.xml文件并基于菜单查询方法定义SQL映射
Service接口及方法设计
第一步:定义菜单业务接口,关键代码如下
第二步:定义菜单业务接口的实现类,关键代码如下
Controller 类及方法设计
创建SysMenuController类型,通过此类型对象处理客户端的菜单请求
菜单添加页面菜单树的加载
服务端设计及实现
Dao接口方法定义
在SysMenuDao中定义查询菜单信息的方法及sql映射
@Select(“select id,name,parentId from sys_menus”)
public List findZtreeMenuNodes();
Service接口方法定义及实现
第一步:在SysMenuService接口中添加菜单节点查询方法,关键代码如下
public List findZtreeMenuNodes();
第二步:在SysMenuServiceImpl类中添加菜单节点查询方法的具体实现,关键代码如下
public List findZtreeMenuNodes(){
return sysMenuDao.findZtreeMenuNodes()
}
Controller类中方法设计及实现
第一步:在SysMenuController类中添加处理查询菜单节点信息的方法,关键代码如下:
@GetMapping(“doFindZtreeMenuNodes”)
public JsonResult doFindZtreeMenuNodes(){
return new JsonResult(sysMenuService.findZtreeMenuNodes());
}
菜单数据添加设计及实现
服务端设计及实现
Dao 接口方法定义
第一步:在SysMenuDao中添加向数据库新增菜单信息的方法
int insertObject(SysMenu entity);
第二步:在映射文件SysMenuMapper.xml中添加insert元素
Service 接口方法设计及实现
第一步:在SysMenuService接口中添加新增菜单的方法,关键代码如下:
int saveObject(SysMenu entity);
第二步:在SysMenuServiceImpl实现类中重写接口方法,关键代码如下:
Controller类中方法设计及实现
第一步:在SysMenuController中添加处理新增菜单请求的方法,关键代码如下:
说明:假如控制层方法参数使用了@RequestBody描述,关键代码如下:
菜单修改页面数据的呈现
列表页面数据的绑定
菜单列表页面数据呈现实现,底层的数据绑定,绑定的目的是为后续获取提供便利。
修改按钮事件处理
菜单页面数据更新设计及实现
服务端设计和实现
Dao 方法设计和实现
第一步:在SysMenuDao接口中添加菜单数据更新方法,关键代码如下:
int updateObject(SysMenu entity);
第二步:在SysMenuMapper.xml文件中添加SQL更新映射,关键代码如下:
Service 方法设计和实现
第一步:在SysMenuService接口中添加菜单更新方法,关键代码如下
int updateObject(SysMenu entity);
第二步:在SysMenuServiceImpl类中添加菜单更新方法的具体实现,关键代码如下:
public int updateObject(
SysMenu entity){
return sysMenuDao.updateObject(entity);
}
Controller方法设计及实现
在SysMenuController中添加更新方法,关键代码如下:
假如客户端向服务端传递的数据为json格式的数据,服务端方法参数需要使用@RequestBody进行描述,关键代码如下:
总结(Summary)
重难点分析
数据表的设计(表中有哪些字段)
菜单列表数据查询(左外关联)
菜单数据封装的设计(SysMenu,Node,JsonResult)
菜单数据的呈现(TreeGrid,Ztree)-知道有这样的插件即可(用时参考官网demo)
FAQ分析
如何理解项目中的菜单?(菜单是资源的外在表现形式,通过菜单操作系统资源)
菜单表中都有哪些字段?
菜单数据的呈现是如何实现的?
菜单数据写入到数据库是乱码?(首先检测服务端收到的是什么,url中配置编码了吗?)