我要做的功能是:权限管理(修改用户所拥有的菜单),以上问题是我遇到的困难并解决。
思路:
1.获取所选中的菜单ID,2.删除该角色ID的角色菜单中间表,3.新增该角色ID的角色菜单中间表
接口:
//增加角色菜单中间表
public int addRoleMenu(int roleId, int[] menuIds) throws Exception;
数组在dao中如何操作:
@Override
public int addRoleMenu(int roleId, int[] menuIds) throws Exception {
//增加角色菜单中间表
String sql="INSERT INTO T_ROLE_MENU(ROLE_ID,MENU_ID) VALUES(?,?)";
Object[][]params=new Object[menuIds.length][];
for(int i=0;i<menuIds.length;i++) {
params[i]=new Object[2];
params[i][0]=roleId;
params[i][1]=Integer.valueOf(menuIds[i]);
}
return runner.batch(JDBCUtil.getConnection(), sql, params).length;
}
应该也可以这样做:(写了方法但没调)
@Override
public int addRoleMenu(RoleMenu roleMenu) {
Connection conn=DBUtil.getConnection();
PreparedStatement ps = null;
String sql="INSERT INTO T_ROLE_MENU(ROLE_ID,MENU_ID) VALUES(?,?)";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, roleMenu.getRoleId());
ps.setInt(2, roleMenu.getMenuId());
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeConn(conn, ps, null);
}
return 0;
}
怎么样把String类型的数组转换成int类型的数组?
// 获取所选菜单
String menuList = request.getParameter("menuList");//"2,12,15,3,18,19,"
String[] menuIds = menuList.split(",");//[0] "2" [1] "12" [2] "15"....
int menuId[] = new int[menuIds.length];//[0] 2 [1] 12 [2] 15....
for (int i = 0; i < menuIds.length; i++) {
menuId[i] = Integer.parseInt(menuIds[i]);
}
来源:CSDN
作者:走到天涯海角
链接:https://blog.csdn.net/weixin_42995083/article/details/104750132