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

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

相关文章

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名