⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roleprivilegedao.java

📁 基于jsp+sevlet的部分权限控制
💻 JAVA
字号:
/**
 * 
 */
package com.qrsx.appcam.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.qrsx.appcam.model.Privilege;
import com.qrsx.appcam.model.Role;
import com.qrsx.appcam.model.RolePrivilege;

/**
 * 创建,删除权限都是以一个列表为参数的.
 * 每次从角色权限编辑页面提交时,先在Action中判断
 * 具体做法是先从数据库中检索该角色所拥有的权限
 * 然后与用户提交的privilegeId进行比较,原来数据库中存在的privilegeID而用户
 * 提交的privilegeID中没有的,要对这些privilegeID进行删除.
 * 反之原来数据库中没有而用户提交了的privilegeId要进行插入.
 * @author 张清华
 *
 */
public class RolePrivilegeDAO extends BaseDAO {
	
	/**
	 * 创建角色权限绑定
	 * @param list
	 * @throws SQLException
	 */
	public void create(RolePrivilege rolePrivilege)throws SQLException{

		Integer[] privilegeIds=rolePrivilege.getPrivilegeIds();
		for(int i=0,n=privilegeIds.length;i<n;i++){
		    String sql = "insert into roleprivilege( roleId,privilegeId) values(?,?)";
	        //设置参数值
	        ps=conn.prepareStatement(sql);
	        ps.setInt(1, rolePrivilege.getRoleId());
	        ps.setInt(2, privilegeIds[i]);        
	        //执行
	        ps.executeUpdate();
		}
		   
	}
	
	/**
	 * 删除角色权限绑定
	 * @param list
	 * @throws SQLException
	 */
	public void delete(Integer roleId,Integer privilegeId)throws SQLException{
		
		String sql = "delete from roleprivilege where roleId=? and privilegeId=?";
	    //设置参数值
	    ps=conn.prepareStatement(sql);
	    ps.setInt(1, roleId);
	    ps.setInt(2, privilegeId);        
	    //执行
	    ps.executeUpdate();
	}
	
    /**
     * 返回角色所绑定的所有权限ID
     * @param roleId
     * @return
     * @throws SQLException
     */
	public RolePrivilege list(Integer roleId)throws SQLException{
		
        String sql = "select * from roleprivilege where roleId=?";
    	
        //执行查询
        ps=conn.prepareStatement(sql);
        ps.setInt(1, roleId);
        ResultSet rs = ps.executeQuery();
        
        //将查询结果组装至RolePrivilege实体对象
        RolePrivilege rolePrivilege1 = new RolePrivilege();
        ArrayList<Integer> list=new ArrayList<Integer>();
        
        //privileges[]=rolePrivilege1.getPrivilegeIds();
        int i=0;
        while(rs.next()){
        	rolePrivilege1.setRoleId(rs.getInt("roleId"));
        	list.add(rs.getInt("privilegeId"));
        	i++;
        }
        
        Integer[] privilegeIds=new Integer[i];
        for(int j=0;j<i;j++){
        	privilegeIds[j]=list.get(j);
        	System.out.println("j=="+j);
        }
        rolePrivilege1.setPrivilegeIds(privilegeIds);
        return rolePrivilege1;
	}
	
    /**
	 * 返回当前用户还不具有的权限
     * @param roleId
     * @return
     * @throws SQLException
     */
	public List<Privilege> assemble(Integer roleId)throws SQLException{
		
		PrivilegeDAO dao=new PrivilegeDAO();
		List<Privilege> list=dao.assemble(roleId);
		return list;
		
	}
	
	/**
	 * 查找指定角色拥有的权限
	 * @param role
	 * @return
	 * @throws SQLException
	 */
	public List<Privilege> findPrivileges(Role role)throws SQLException{
		
		String sql = "select privilegeId from roleprivilege where roleId=?";
		ps=conn.prepareStatement(sql);
		ps.setInt(1, role.getId());
		
		ResultSet rs=ps.executeQuery();
		Privilege privilege=null;
		List<Privilege> list=new ArrayList<Privilege>();
		PrivilegeDAO dao=new PrivilegeDAO();
		while(rs.next()){
			privilege=dao.findById(rs.getInt("privilegeId"));
			list.add(privilege);
		}
		return list;
		
	}
	
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -