首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Service层 动态加载菜单的打包

2012-12-28 
Service层 动态加载菜单的封装.package pack.y2.hibernate.serviceimplimport java.util.HashMapimport

Service层 动态加载菜单的封装.

package pack.y2.hibernate.serviceimpl;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import pack.y2.hibernate.daoimpl.MenusDaoImpl;import pack.y2.hibernate.daoimpl.RolesDaoImpl;import pack.y2.hibernate.daoimpl.UserDaoImpl;import pack.y2.hibernate.idao.IMenusDao;import pack.y2.hibernate.idao.IRolesDao;import pack.y2.hibernate.idao.IUsersDao;import pack.y2.hibernate.iservice.IUserService;import pack.y2.hibernate.pojo.Menus;import pack.y2.hibernate.pojo.Roles;import pack.y2.hibernate.pojo.Users;public class UserServiceImpl implements IUserService{IUsersDao iuser=new UserDaoImpl(); IMenusDao imeus=new MenusDaoImpl();IRolesDao irole=new RolesDaoImpl();/** * 根据用户名得到权限; */public Set selectByName(String name) {// TODO Auto-generated method stub  String hql="From Menus as M join fetch M.roleses R join fetch R.userses U where U.username=?";List list=iuser.pageQuery(hql, null, null,name);//把list转成set集合;Set set=new HashSet(list);return set;}//得到所有的用户;public Map selectAll(Integer page) {// TODO Auto-generated method stubString hql="From Users";List list=iuser.pageQuery(hql,page,8);Map map=new HashMap();map.put("UserList", list);String hql2="select count(*) From Users";//得到总页数;List list2=iuser.pageQuery(hql2, null, null);Object obj=list2.get(0);int sum=Integer.parseInt(obj.toString());//添加总记录数;map.put("Sum",sum);//添加总页数;Integer sumPage=sum%8==0?sum/8:sum/8+1;map.put("SumPage",sumPage);return map;}//查询用户已有的权限;public List findGrant_UserById(Long userid) {// TODO Auto-generated method stubString hql="From Roles r where r.userses.userid=?";List list=iuser.pageQuery(hql, null, null,userid);return list;}//查询用户没有的权限;public List findNotGrant_UserById(Long userid) {// TODO Auto-generated method stubString hql="From Roles where rolesid not in(select r.rolesid From Roles r where r.userses.userid=?)";List list=iuser.pageQuery(hql, null, null, userid);return list;}//保存用户角色的方法;public void saveUserGrant(Long userid, String rolesid) {//根据用户编号查找出用户对象;Users users=(Users)iuser.selectById(userid);System.out.println("roles字符串为:"+rolesid);if(rolesid==null || rolesid.length()<1){//清除所有的集合;users.getRoleses().clear();}else{StringBuffer sb=new StringBuffer("From Roles r where r.rolesid in(");sb.append(rolesid);sb.setCharAt(sb.toString().length()-1, ')');String hql=sb.toString();List list=iuser.pageQuery(hql, null, null);Set set=new HashSet(list);System.out.println("list大小:"+list.size());//把角色重新放入集合中;users.setRoleses(set);}//最后更新用户;iuser.add(users);}//得到所有的菜单项;public List getMenusAll() {// TODO Auto-generated method stubList list=imeus.selectAll();return list;}public static void main(String[] args) {Set list=new UserServiceImpl().getUsersByRolesId(new Long(1));for(Object obj:list){Users u=(Users)obj;System.out.println(u.getUsername());}}//根据角色编号查找出菜单编号;public List getRoleAllByRoleId(Long roleid){String hql="From Menus m where m.roleses.rolesid=?";List list=imeus.pageQuery(hql, null, null, roleid);return list;}//得到所有的角色;public List getRolesAll(){String hql="From Roles";List list=irole.selectAll();return list;}//根据穿过来的角色编号查找出角色对象;角色对象中有一个菜单对象的集合;//首先清除所有的菜单权限;然后在判断menusid是否为空;如果不为空,则用StringBuffer sb=new StringBuffer("From Roles where r .menus.memusid in(");//然后在把menusid传入到in里面;拼成sql语句;执行后返回List结果集;把结果集放入set集合中;//最后调用更新方法进行更新操作;public void saveMenusByRolesId(Long rolesId, String menusId) {String hql="From Roles r where r.rolesid=?";List list=irole.pageQuery(hql, null, null, rolesId);//得到一个角色对象;Roles role=(Roles)list.get(0);//清除角色对象中的所有菜单;role.getMenuses().clear();if(menusId!=null && menusId.length()>0){//根据menusId查找出所有的菜单出来;StringBuffer sb=new StringBuffer("From Menus s where s.menusid in(");sb.append(menusId);//把菜单编号最后一个,替换成")";sb.setCharAt(sb.length()-1, ')');List menus=imeus.pageQuery(sb.toString(), null, null, null);Set set=new HashSet(menus);//然后把,菜单集合重新放入到角色对象中;role.setMenuses(set);}//最后,进行更新;irole.update(role);System.out.println("菜单更新完成!。");}public Set getUsersByRolesId(Long rolesid) {// TODO Auto-generated method stubString hql="From Roles r where r.rolesid=?";List list=imeus.pageQuery(hql, null, null,rolesid);Set set=new HashSet();for (Object obj : list) {Roles role=(Roles)obj;set=role.getUserses();}return set;}}

?

?

创建角色的数据库脚本,

--创建用户表;drop table users;create table users(     --主键,     userid number primary key not null,     username varchar2(50)not null,     userpass varchar2(20)not null,     --外键,所属部门;     deptid number not null,       --生日;     birthday date not null,     sex varchar2(4)not null,     age number not null,     --手机;     combine varchar2(11)null,     email varchar2(50)null,     address varchar2(50)null,     zipcode varchar2(8)null,     remark varchar2(50)null,     --创建users表的所属部门的外键;     foreign key(deptid) references dept(deptid))--创建序列;drop sequence seq_users;create sequence seq_users;insert into users values(seq_users.nextval,'雪见','123456',3,sysdate,'女',23,'13459858985','xuejian@163.com','北京市','0101000','暂无备注');insert into users values(seq_users.nextval,'李逍遥','123456',1,sysdate,'男',27,'15973556785','huge@126.com','北京市','014502','暂无备注');insert into users values(seq_users.nextval,'龙葵','123456',2,sysdate,'男',20,'18978985858','longkui@126.com','湖南长沙','314502','暂无备注');--创建角色表;drop table roles;create table roles(rolesid number primary key not null,                --主键角色编号;rolename varchar2(20)not null                       --角色名称;  )drop sequence seq_roles;create sequence seq_roles;insert into roles values(seq_roles.nextVal,'管理员');insert into roles values(seq_roles.nextVal,'程序员');insert into roles values(seq_roles.nextVal,'项目经理');insert into roles values(seq_roles.nextVal,'公司总裁');--用户角色中间表;drop table user_roles;create table user_roles(urId number references users(userid),     --<外键>用户编号;rolesid number references roles(rolesid)  --<外键>角色编号;);insert into user_roles values(1,1);insert into user_roles values(2,2);insert into user_roles values(3,3);--菜单表;drop table menus;create table menus(                 menusid number primary key not null,                          --菜单编号; menusname varchar2(20)not null,                               --菜单姓名; menusparent number not null,                                  --父菜单编号;menusurl varchar2(150) null,                                  --菜单链接;isshow number not null                                        --是否显示;)drop sequence seq_menus;create sequence seq_menus;--'-1'代表根目录 ; --1代表根目录下; 2--代表1的跟目下, --3代表-同级目录;insert into menus values(seq_menus.nextVal,'功能菜单',-1,'',1);insert into menus values(seq_menus.nextVal,'系统管理',1,'',1);insert into menus values(seq_menus.nextVal,'用户管理',2,'',1);insert into menus values(seq_menus.nextVal,'考勤管理',3,'',1);insert into menus values(seq_menus.nextVal,'个人设置',3,'',1);insert into menus values(seq_menus.nextVal,'短信管理',3,'',1);insert into menus values(seq_menus.nextVal,'通讯录管理',3,'',1);insert into menus values(seq_menus.nextVal,'权限管理',3,'',1);insert into menus values(seq_menus.nextVal,'公告管理',3,'',1);--角色菜单中间表;drop table rols_menus;create table rols_menus(rolesid number references roles(rolesid), --<外键>角色编号;menusid number references menus(menusid)  --<外键>菜单编号;)drop sequence seq_rols_menus;create sequence seq_rols_menus;insert into rols_menus values(1,1);insert into rols_menus values(1,2);insert into rols_menus values(2,1);insert into rols_menus values(2,2);insert into rols_menus values(3,1);insert into rols_menus values(4,2);

?

75.insert into menus values(seq_menus.nextVal,'考勤管理',[color=red]3[/color],'',1); 76.insert into menus values(seq_menus.nextVal,'个人设置',[color=red]3[/color],'',1); 77.insert into menus values(seq_menus.nextVal,'短信管理',[color=red]3[/color],'',1); 78.insert into menus values(seq_menus.nextVal,'通讯录管理',[color=red]3[/color],'',1); 79.insert into menus values(seq_menus.nextVal,'权限管理',[color=red]3[/color],'',1); 80.insert into menus values(seq_menus.nextVal,'公告管理',[color=red]3[/color],'',1);
3代表的父节点是哪个??好像没插入3节点了??

热点排行