节点我们在上一节能够完整的展示出来了,我们这个所需要做的就是根据在我们读取出来的节点上进行修改,也就是我们的右键的内容:如下图所示:
按照上一节的逻辑,我们分析可以得到,还是针对上节的同一个表进行的操作,只不过那个是简单的查询,而这个则是需要对数据库的内容进行更改了。所以我们知道了需要操作的表,之后我们需要分析一下从页面到后台数据库的流程:
添加操作:
首先,我们点击右键就会发出我们的需求,我们需要添加一个节点,所以会需要我们有一个服务来支持此操作,所以我们还是回归上节课分析的content-category.jsp页面,可以发现,有我们的添加对应的内容的js代码:
从上面的代码中可以分析得到以下内容:
这样这个业务逻辑就可以告一段落了。
参数:1、parentId父节点id;2、name:当前节点的名称;返回值:TaotaoResult。其中包含节点pojo对象。
所以我们可以完成添加功能了:
Dao层:
因为分析了解还是对上节的同一个表进行操作,所以我们仍旧可以使用逆向工程生成的代码。
Service层:
功能:接收两个参数parentId父节点id、name:当前节点的名称。向tb_content_category表中添加一条记录。返回TaoTaoResult包含记录的pojo对象。
需要返回主键信息:需要修改mapper文件,返回主键信息。
这主要是因为id是自增长的,所以当我们插入的时候,id会自动增加1,但是,我们insert之前是没有的,所以我们需要获取相应的时,需要获取最后一个插入的ID。改写好后,设计的代码如下:
@Override public NewstylesResult insertContentCategory(long parentId, String name) { // TODO Auto-generated method stub // 创建一个pojo TbContentCategory contentCartgory = new TbContentCategory(); //注意修改mapper文件******* //在插入数据之后才可以取到 contentCartgory.setName(name); contentCartgory.setIsParent(false); //状态:1:正常,2删除 contentCartgory.setStatus(1); contentCartgory.setParentId(parentId); contentCartgory.setSortOrder(1); contentCartgory.setCreated(new Date()); contentCartgory.setUpdated(new Date()); contentCategoryMapper.insert(contentCartgory); //查看父节点的isParent的属性是否为true TbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId); if(!parentCat.getIsParent()){ parentCat.setIsParent(true); //跟新父节点 contentCategoryMapper.updateByPrimaryKey(parentCat); } return NewstylesResult.ok(contentCartgory) ; }
Controller层:
接收两个参数parentid、name。调用Service添加记录。返回TaotaoResult。应该返回json数据。
在上节的Controller层中添加下面的内容:
@RequestMapping("/category/create") @ResponseBody public NewstylesResult createContentCategory(long parentId,String name){ NewstylesResult result = contentCargoryService.insertContentCategory(parentId, name); return result; }
至此,节点的添加操作就已经完成,这样实现了在页面请求添加节点的需求。方便了内容的管理,而有时候我们需要修改节点的名称,南无我们怎么修改呢?
重命名操作:
紧接着上面分析的页面的代码,我们可以发现请求的逻辑为update,所以我们就不在重复分析了。直接展开我们的业务逻辑:Dao层:
使用之前逆向工程生成的代码,因为还是对单个表进行操作。
Service层:
在上面的Service层(ContentCategoryServiceImpl)中添加如下代码,完成重命名的逻辑:》
@Override public NewstylesResult updateContentCategoryName(long id, String name) { //查询到对应的节点 TbContentCategory tbContentCat = contentCategoryMapper.selectByPrimaryKey(id); tbContentCat.setName(name); tbContentCat.setUpdated(new Date()); contentCategoryMapper.updateByPrimaryKey(tbContentCat); return NewstylesResult.ok(); }之后,我们需要注意,此处也是需要两个参数,而参数的判定也是根据页面进行确定的,多以在这里还是需要id和name进行更新。
Controller层:
在上面的Controller文件中添加下面的内容,完成页面控制:
@RequestMapping("/category/update") @ResponseBody public NewstylesResult updateContentCategoryName(long id ,String name){ NewstylesResult result = contentCargoryService.updateContentCategoryName(id, name); return result; }
这样这个业务逻辑就可以告一段落了。
测试:
右键新建一个内容和重命名一个节点:
因为使用的ajax请求的方式,我们为了验证真的能够添加节点,所以我们刷新页面和检查表中的内容:
刷新之后存在:
同时更改“”重命名分类“”为rename:
再次刷新:
数据库中经过上述操作后的内容:
测试成功!