在项目中,控制权限保存时,如果多次修改权限,该如何写?

2024-09-08 04:08

本文主要是介绍在项目中,控制权限保存时,如果多次修改权限,该如何写?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在项目中,控制权限保存时,如果多次修改权限,该如何写?


错误代码:

package cn.itcast.crm.service.impl;import java.util.List;import javax.annotation.Resource;import org.apache.commons.lang.xwork.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import cn.itcast.crm.dao.ISysPopedomPrivilegeDao;
import cn.itcast.crm.domain.SysPopedomPrivilege;
import cn.itcast.crm.domain.SysPopedomPrivilegeId;
import cn.itcast.crm.service.ISysPopedomPrivilegeService;@Transactional(readOnly=true)
@Service(ISysPopedomPrivilegeService.SERVICE_NAME)
public class SysPopedomPrivilegeServiceImpl implements ISysPopedomPrivilegeService {@Resource(name=ISysPopedomPrivilegeDao.SERVICE_NAME)private ISysPopedomPrivilegeDao sysPopedomPrivilegeDao;@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)public void updatePopedom(String roleId, String[] popedomModules) {//保存该权限组对应的所有的权限if(StringUtils.isNotBlank(roleId)&&popedomModules!=null&&popedomModules.length>0){for(int i=0;i<popedomModules.length;i++){if(StringUtils.isNotBlank(popedomModules[i])){String[] str=popedomModules[i].split(",");SysPopedomPrivilege sysPopedomPrivilege=new SysPopedomPrivilege();SysPopedomPrivilegeId id = new SysPopedomPrivilegeId();id.setRoleId(roleId);id.setPopedomModule(str[0]);id.setPopedomPrivilege(str[1]);sysPopedomPrivilege.setId(id);sysPopedomPrivilegeDao.save(sysPopedomPrivilege);}}}}}<span style="color:#ff0000;">
</span>

错误提示:


正确代码:

package cn.itcast.crm.service.impl;import java.util.List;import javax.annotation.Resource;import org.apache.commons.lang.xwork.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import cn.itcast.crm.dao.ISysPopedomPrivilegeDao;
import cn.itcast.crm.domain.SysPopedomPrivilege;
import cn.itcast.crm.domain.SysPopedomPrivilegeId;
import cn.itcast.crm.service.ISysPopedomPrivilegeService;@Transactional(readOnly=true)
@Service(ISysPopedomPrivilegeService.SERVICE_NAME)
public class SysPopedomPrivilegeServiceImpl implements ISysPopedomPrivilegeService {@Resource(name=ISysPopedomPrivilegeDao.SERVICE_NAME)private ISysPopedomPrivilegeDao sysPopedomPrivilegeDao;@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)public void updatePopedom(String roleId, String[] popedomModules) {//删除该权限组对应的所有权限if(StringUtils.isNotBlank(roleId)&&popedomModules!=null&&popedomModules.length>0){String whereHql=" and o.id.roleId=?";Object[] params={roleId};List<SysPopedomPrivilege> list=sysPopedomPrivilegeDao.findObjectByConditionWithNoPage(whereHql, params);sysPopedomPrivilegeDao.deleteAllObjects(list);}//保存该权限组对应的所有的权限if(StringUtils.isNotBlank(roleId)&&popedomModules!=null&&popedomModules.length>0){for(int i=0;i<popedomModules.length;i++){if(StringUtils.isNotBlank(popedomModules[i])){String[] str=popedomModules[i].split(",");SysPopedomPrivilege sysPopedomPrivilege=new SysPopedomPrivilege();SysPopedomPrivilegeId id = new SysPopedomPrivilegeId();id.setRoleId(roleId);id.setPopedomModule(str[0]);id.setPopedomPrivilege(str[1]);sysPopedomPrivilege.setId(id);sysPopedomPrivilegeDao.save(sysPopedomPrivilege);}}}}}
应该先 删除该权限组对应的所有权限,然后再保存该权限组对应的所有的权限。


这篇关于在项目中,控制权限保存时,如果多次修改权限,该如何写?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147070

相关文章

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red