20综合实践多对多映射 管理员角.docx
《20综合实践多对多映射 管理员角.docx》由会员分享,可在线阅读,更多相关《20综合实践多对多映射 管理员角.docx(15页珍藏版)》请在冰豆网上搜索。
20综合实践多对多映射管理员角
1、综合案例:
多对多映射
2、具体内容
提示:
用户只写核心信息即可,例如:
编号、姓名,权限只写编号、名称即可。
其他的表都要写。
开发要求:
1、将数据还原为简单的java类。
2、数据的输出:
|-可以根据一个用户输出它对应的角色以及每个角色对应的权限,以及包含的具体的权限详解;
|-一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出权限所有权限详解:
|-一个角色可以输出它所包含的管理员,每个管理员对应的具体的权限,以及权限详情。
第一步:
数据表转换为简单java类。
classUser
{
privateStringuserid;
privateStringname;
privateStringpassword;
publicUser(Stringuserid,Stringname,Stringpassword){
this.userid=userid;
this.name=name;
this.password=password;
}
publicStringgetInfo(){
return"用户ID:
"+this.userid+",姓名:
"+this.name+",密码:
"+this.password;
}
}
classRole
{//角色
privateintrid;
privateStringtitle;
publicRole(intrid,Stringtitle){
this.rid=rid;
this.title=title;
}
publicStringgetInfo(){
return"角色编号:
"+this.rid+",名称:
"+this.title;
}
}
classGroup
{//权限组
privateintgid;
privateStringtitle;
publicGroup(intgid,Stringtitle){
this.gid=gid;
this.title=title;
}
publicStringgetInfo(){
return"权限组编号:
"+this.gid+",组名称:
"+this.title;
}
}
classAction
{//权限
privateintaid;
privateStringtitle;
privateStringurl;
publicAction(intaid,Stringtitle,Stringurl){
this.aid=aid;
this.title=title;
this.url=url;
}
publicStringgetInfo(){
return"权限编号:
"+this.aid+",权限名称:
"+this.title+",路径:
"+this.url;
}
}
第二步:
设置关系:
∙一个角色包含多个用户,一对多关系;
∙一个权限组包含有多个权限,属于一对多关系;
∙一个角色对应有多个权限组,每个权限组可能有多个角色,多对多;
classUser
{
privateStringuserid;
privateStringname;
privateStringpassword;
privateRolerole;
publicUser(Stringuserid,Stringname,Stringpassword){
this.userid=userid;
this.name=name;
this.password=password;
}
publicvoidsetRole(Rolerole){
this.role=role;
}
publicRolegetRole(){
returnthis.role;
}
publicStringgetInfo(){
return"用户ID:
"+this.userid+",姓名:
"+this.name+",密码:
"+this.password;
}
}
classRole
{//角色
privateintrid;
privateStringtitle;
privateUserusers[];
privateGroupgroups[];
publicRole(intrid,Stringtitle){
this.rid=rid;
this.title=title;
}
publicvoidsetGroups(Groupgroups[]){
this.groups=groups;
}
publicGroup[]getGroups(){
returnthis.groups;
}
publicvoidsetUsers(Userusers[]){
this.users=users;
}
publicUser[]getUsers(){
returnthis.users;
}
publicStringgetInfo(){
return"角色编号:
"+this.rid+",名称:
"+this.title;
}
}
classGroup
{//权限组
privateintgid;
privateStringtitle;
privateActionactions[];
privateRoleroles[];
publicGroup(intgid,Stringtitle){
this.gid=gid;
this.title=title;
}
publicvoidsetRoles(Roleroles[]){
this.roles=roles;
}
publicRole[]getRoles(){
returnthis.roles;
}
publicvoidsetActions(Actionactions[]){
this.actions=actions;
}
publicAction[]getActions(){
returnthis.actions;
}
publicStringgetInfo(){
return"权限组编号:
"+this.gid+",组名称:
"+this.title;
}
}
classAction
{//权限
privateintaid;
privateStringtitle;
privateStringurl;
privateGroupgroup;
publicAction(intaid,Stringtitle,Stringurl){
this.aid=aid;
this.title=title;
this.url=url;
}
publicvoidsetGroup(Groupgroup){
this.group=group;
}
publicGroupgetGroup(){
returnthis.group;
}
publicStringgetInfo(){
return"权限编号:
"+this.aid+",权限名称:
"+this.title+",路径:
"+this.url;
}
}
分杀完毕。
迅速,一定是不需要使用脑子就直接写出来的。
第三步:
设置关系;
classUser
{
privateStringuserid;
privateStringname;
privateStringpassword;
privateRolerole;
publicUser(Stringuserid,Stringname,Stringpassword){
this.userid=userid;
this.name=name;
this.password=password;
}
publicvoidsetRole(Rolerole){
this.role=role;
}
publicRolegetRole(){
returnthis.role;
}
publicStringgetInfo(){
return"用户ID:
"+this.userid+",姓名:
"+this.name+",密码:
"+this.password;
}
}
classRole
{//角色
privateintrid;
privateStringtitle;
privateUserusers[];
privateGroupgroups[];
publicRole(intrid,Stringtitle){
this.rid=rid;
this.title=title;
}
publicvoidsetGroups(Groupgroups[]){
this.groups=groups;
}
publicGroup[]getGroups(){
returnthis.groups;
}
publicvoidsetUsers(Userusers[]){
this.users=users;
}
publicUser[]getUsers(){
returnthis.users;
}
publicStringgetInfo(){
return"角色编号:
"+this.rid+",名称:
"+this.title;
}
}
classGroup
{//权限组
privateintgid;
privateStringtitle;
privateActionactions[];
privateRoleroles[];
publicGroup(intgid,Stringtitle){
this.gid=gid;
this.title=title;
}
publicvoidsetRoles(Roleroles[]){
this.roles=roles;
}
publicRole[]getRoles(){
returnthis.roles;
}
publicvoidsetActions(Actionactions[]){
this.actions=actions;
}
publicAction[]getActions(){
returnthis.actions;
}
publicStringgetInfo(){
return"权限组编号:
"+this.gid+",组名称:
"+this.title;
}
}
classAction
{//权限
privateintaid;
privateStringtitle;
privateStringurl;
privateGroupgroup;
publicAction(intaid,Stringtitle,Stringurl){
this.aid=aid;
this.title=title;
this.url=url;
}
publicvoidsetGroup(Groupgroup){
this.group=group;
}
publicGroupgetGroup(){
returnthis.group;
}
publicStringgetInfo(){
return"权限编号:
"+this.aid+",权限名称:
"+this.title+",路径:
"+this.url;
}
}
publicclassTestDemo
{
publicstaticvoidmain(Stringargs[]){
//第一步:
根据表结构设置关系
//1、定义单独的类对象
Userua=newUser("user-a","用户A","hello");
Userub=newUser("user-b","用户B","hello");
Useruc=newUser("user-c","用户C","hello");
//2、定义权限
Actionact1=newAction(1,"新闻管理","
Actionact2=newAction(2,"用户管理","
Actionact3=newAction(3,"备份管理","
Actionact4=newAction(4,"缓存管理","
Actionact5=newAction(5,"数据管理","
//3、定义权限组信息
Groupg1=newGroup(1,"数据管理");
Groupg2=newGroup(2,"人事管理");
Groupg3=newGroup(3,"信息管理");
//4、定义角色信息
Roler1=newRole(10,"超级管理员角色");
Roler2=newRole(10,"普通管理员角色");
//5、设置权限组与权限制关系,一对多关系
act1.setGroup(g1);//权限与权限级的关系
act2.setGroup(g1);//权限与权限级的关系
act3.setGroup(g2);//权限与权限级的关系
act4.setGroup(g2);//权限与权限级的关系
act5.setGroup(g3);//权限与权限级的关系
g1.setActions(newAction[]{act1,act2});
g2.setActions(newAction[]{act3,act4});
g3.setActions(newAction[]{act5});
//6、权限组与角色关系
r1.setGroups(newGroup[]{g1,g2,g3});
r2.setGroups(newGroup[]{g2,g3});
g1.setRoles(newRole[]{r1,r2});
g2.setRoles(newRole[]{r1,r2});
//7、定义用户与角色关系
ua.setRole(r1);
ub.setRole(r2);
uc.setRole(r2);
r1.setUsers(newUser[]{ua});
r2.setUsers(newUser[]{ub,uc});
//第二步:
根据要求通过关系取出数据
//可以根据一个用户输出它对应的角色以及每个角色对应的权限,以及包含的具体的权限详情;
System.out.println(ua.getInfo());
System.out.println("\t|-【角色】"+ua.getRole().getInfo());
for(intx=0;xSystem.out.println("\t\t|-【权限组】"+ua.getRole().getGroups()[x].getInfo());
for(inty=0;ySystem.out.println("\t\t\t|-【权限】"+ua.getRole().getGroups()[x].getActions()[y].getInfo());
}
}
System.out.println("\n======================================================\n");
//一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出权限所有权限详解:
System.out.println(act1.getInfo());
//通过权限找到权限对应的权限组,一个权限组有多个角色
for(intx=0;xSystem.out.println("\t\t|-【角色】"+act1.getGroup().getRoles()[x].getInfo());
for(inty=0;ySystem.out.println("\t\t\t|-【用户】"+act1.getGroup().getRoles()[x].getUsers()[y].getInfo());
}
}
System.out.println("\n======================================================\n");
//一个角色可以输出它所包含的管理员,每个管理员对应的具体的权限,以及权限详情。
System.out.println(r1.getInfo());
for(intx=0;xSystem.out.println("\t|-【用户】"+r1.getUsers()[x].getInfo());
for(inty=0;ySystem.out.println("\t\t|-【权限组】"+r1.getGroups()[y].getInfo());
for(intz=0;zSystem.out.println("\t\t\t|-【权限】"+r1.getGroups()[y].getActions()[z].getInfo());
}
}
}
}
}
引用,引用,引有就java基础的核心。
3、总结
这种转换必须做到零用脑编写。