官网关于Mysql数据库中间表的修改方法
表 角色表, 菜单表, 角色菜单中间表方法: 修改角色的菜单匹配思路1:触发器,假设更新就是新建,之前的全部删除,那么触发器的思路就是如果以前的某角色对应菜单不为空,全部删除,然后新建一批,就算是修改了,但是触发器会报错,重复注入思路2:不用触发器,实现上面的思路思路3:触发器,假设更新是更新删除标志,之前的全部删除标志设为-1,那么新的删除标志就是0,但是这样因为中间表是双主键,所以会造成重复注册,也失败思路4:这个主要是我在代码的实现,套用了列表修改,列表修改也是可以值修改一个的,这样可以进行复用,实现代码:
update(@RequestBody List sysRoles, @RequestParam(value = "菜单编号") List menus){ try{ for(SysRole sysRole: sysRoles){ if(menus != null){ int result = sysRoleService.updateRoleAndMenuDelFlag(sysRole.getId()); for(Long sysMenu: menus){ SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setId(UUID.randomUUID().toString()); sysRoleMenu.setCreateBy(sysRole.getCreateBy()); sysRoleMenu.setRoleId(sysRole.getId()); sysRoleMenu.setMenuId(sysMenu); sysRoleMenu.setCreateTime(new Date()); sysRoleMenu.setLastUpdateTime(new Date()); sysRoleMenu.setLastUpdateBy(sysRole.getCreateBy()); sysRoleMenu.setDelFlag((byte)0); sysRoleMenu.setCreateBy(sysRoleMenu.getLastUpdateBy()); sysRoleService.saveRoleAndMenu(sysRoleMenu); } }else{ sysRole.setLastUpdateTime(new Date()); sysRoleService.update(sysRole); } }
if 语句搞定,可能还有其他思路
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~