Java——简单Java类深入(数据表与简单Java类、一对多映射、双向一对多映射、多对多映射)

举报
Winter_world 发表于 2021/09/29 00:43:47 2021/09/29
【摘要】 目录 1、数据表与简单Java类的映射 2、一对多数据映射 3、双向一对多映射 4、多对多数据映射 1、数据表与简单Java类的映射 简单Java类是整个项目开发的灵魂,其有严格的开发标准,最为重要的是它要与数据表完全对应。由于目前没有接触过多的程序设计功能,所以对于此处的访问就有了一些限制,目前要求可以完成如下两个操作:...

目录

1、数据表与简单Java类的映射

2、一对多数据映射

3、双向一对多映射

4、多对多数据映射


1、数据表与简单Java类的映射

简单Java类是整个项目开发的灵魂,其有严格的开发标准,最为重要的是它要与数据表完全对应。由于目前没有接触过多的程序设计功能,所以对于此处的访问就有了一些限制,目前要求可以完成如下两个操作:

  • 根据数据表的结构关系进行数据以及引用的设置;
  • 根据数据表的结构可以取出所需要的数据。

选用熟悉的数据结构:dept、emp,实现这样的转换操作。现在开发要求如下:

1)使用以下的数据表与表中的字段:

  • 雇员表emp:empno、ename、job、sal、comm、mgr、deptno;
  • 部门表dept:deptno、dname、loc。

2)数据操作要求:

  • 根据表结构完整的设置雇员、经理、部门的关系;
  • 可以完成如下输出:

             --可以输出一个雇员的完整信息,包括雇员 的领导、以及所在的部门信息;
             --可以输出一个部门的完整信息,以及这个部门的所有雇员信息,以及这个雇员的领导信息。

【第一步】:写出基本字段的映射转换

  • 雇员表emp:empno、ename、job、sal、comm、mgr、deptno;
  • 部门表dept:deptno、dname、loc。

  
  1. class Emp{
  2. private int empno;
  3. private String name;
  4. private String job;
  5. private double sal;
  6. private double comm;
  7. public Emp(){}
  8. public Emp(int empno, String name, String job, double sal, double comm) {
  9. this.empno = empno;
  10. this.name = name;
  11. this.job = job;
  12. this.sal = sal;
  13. this.comm = comm;
  14. }
  15. //setter getter暂时省略
  16. public String getInfo(){
  17. return "雇员编号:"+this.empno +",姓名:"+this.name +",职位:"+this.job+",佣金:"+this.sal+",佣金:"+this.comm;
  18. }
  19. }
  20. class Dept{
  21. private int deptno;
  22. private String dname;
  23. private String loc;
  24. public Dept(){}
  25. public Dept(int deptno, String dname, String loc) {
  26. this.deptno = deptno;
  27. this.dname = dname;
  28. this.loc = loc;
  29. }
  30. //setter getter暂时省略
  31. public String getInfo(){
  32. return "部门编号:"+this.deptno +",名称:"+this.dname +",位置:"+this.loc;
  33. }
  34. }

【第二步】:设计关系字段

本程序存在两个关系:

  • 自身关联:mgr字段,mgr也是一个雇员;
  • 外键关联:deptno字段;

  
  1. class Emp{
  2. private int empno;
  3. private String name;
  4. private String job;
  5. private double sal;
  6. private double comm;
  7. private Emp mgr;//领导,一个雇员一个领导
  8. private Dept dept;//部门,一个雇员属于一个部门
  9. public Emp(){}
  10. public Emp(int empno, String name, String job, double sal, double comm) {
  11. this.empno = empno;
  12. this.name = name;
  13. this.job = job;
  14. this.sal = sal;
  15. this.comm = comm;
  16. }
  17. public Emp getMgr() {
  18. return mgr;
  19. }
  20. public void setMgr(Emp mgr) {
  21. this.mgr = mgr;
  22. }
  23. public Dept getDept() {
  24. return dept;
  25. }
  26. public void setDept(Dept dept) {
  27. this.dept = dept;
  28. }
  29. //setter getter暂时省略
  30. public String getInfo(){
  31. return "雇员编号:"+this.empno +",姓名:"+this.name +",职位:"+this.job+",佣金:"+this.sal+",佣金:"+this.comm;
  32. }
  33. }
  34. class Dept{
  35. private int deptno;
  36. private String dname;
  37. private String loc;
  38. private Emp[] emps;
  39. public Dept(){}
  40. public Dept(int deptno, String dname, String loc) {
  41. this.deptno = deptno;
  42. this.dname = dname;
  43. this.loc = loc;
  44. }
  45. //setter getter暂时省略
  46. public Emp[] getEmps() {
  47. return emps;
  48. }
  49. public void setEmps(Emp[] emps) {
  50. this.emps = emps;
  51. }
  52. public String getInfo(){
  53. return "部门编号:"+this.deptno +",名称:"+this.dname +",位置:"+this.loc;
  54. }
  55. }

【第三步】:执行数据操作

  • 设置数据关系;

  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:根据已有的表结构设置数据
  6. //1、准备好所有独立的类对象
  7. Dept dept =new Dept(10,"技术部","China");
  8. Emp empA = new Emp(100,"张三","硬件工程师",800.0,0.0);
  9. Emp empB = new Emp(100,"李四","软件工程师",900.0,0.0);
  10. //2、设置关系
  11. empA.setMgr(empB);//设置雇员与领导关系
  12. empA.setDept(dept);//设置雇员与部门关系
  13. empB.setDept(dept);//设置雇员与部门关系
  14. dept.setEmps(new Emp[]{empA,empB});//一个部门包含多个雇员
  15. }
  16. }
  • 取出雇员完整数据;

  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:根据已有的表结构设置数据
  6. //1、准备好所有独立的类对象
  7. Dept dept =new Dept(10,"技术部","China");
  8. Emp empA = new Emp(100,"张三","硬件工程师",800.0,0.0);
  9. Emp empB = new Emp(100,"李四","软件工程师",900.0,0.0);
  10. //2、设置关系
  11. empA.setMgr(empB);//设置雇员与领导关系
  12. empA.setDept(dept);//设置雇员与部门关系
  13. empB.setDept(dept);//设置雇员与部门关系
  14. dept.setEmps(new Emp[]{empA,empB});//一个部门包含多个雇员
  15. //第二步:根据表结构,利用引用关系取出数据
  16. System.out.println("雇员信息:"+empA.getInfo()); //输出雇员基本信息
  17. System.out.println("领导信息:"+empA.getMgr().getInfo()); //输出雇员领导信息
  18. System.out.println("部门信息:"+empA.getDept().getInfo()); //输出雇员部门信息
  19. }
  20. }

  • 取出部门的完整信息

  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:根据已有的表结构设置数据
  6. //1、准备好所有独立的类对象
  7. Dept dept =new Dept(10,"技术部","China");
  8. Emp empA = new Emp(100,"张三","硬件工程师",800.0,0.0);
  9. Emp empB = new Emp(100,"李四","软件工程师",900.0,0.0);
  10. //2、设置关系
  11. empA.setMgr(empB);//设置雇员与领导关系
  12. empA.setDept(dept);//设置雇员与部门关系
  13. empB.setDept(dept);//设置雇员与部门关系
  14. dept.setEmps(new Emp[]{empA,empB});//一个部门包含多个雇员
  15. //第二步:根据表结构,利用引用关系取出数据
  16. System.out.println("雇员信息:"+empA.getInfo()); //输出雇员基本信息
  17. System.out.println("领导信息:"+empA.getMgr().getInfo()); //输出雇员领导信息
  18. System.out.println("部门信息:"+empA.getDept().getInfo()); //输出雇员部门信息
  19. System.out.println("==================================");
  20. System.out.println(dept.getInfo());//部门信息
  21. for(int x=0;x<dept.getEmps().length;x++){
  22. System.out.println(dept.getEmps()[x].getInfo());
  23. if(dept.getEmps()[x].getMgr()!=null)
  24. System.out.println(dept.getEmps()[x].getMgr().getInfo());
  25. }
  26. }
  27. }

2、一对多数据映射

【举例】:课程分类

一个课程分类有多个子分类,要求:

  • 利用简单Java类实现数据表的还原;
  • 进行如下输出:

                --可以输出一个子分类的信息,同时输出它所对应的分类信息;

                --可以输出一个分类的信息,及所包含的所有子分类信息;

第一步:实现基本字段


  
  1. class Item{
  2. private int iid;
  3. private String title;
  4. private String note;
  5. //setter getter 无参省略
  6. public Item(int iid, String title, String note) {
  7. this.iid = iid;
  8. this.title = title;
  9. this.note = note;
  10. }
  11. public String getInfo(){
  12. return "id:"+this.iid+",名称:"+this.title+",简介:"+this.note;
  13. }
  14. }
  15. class SubItem{
  16. private int sid;
  17. private String title;
  18. private String note;
  19. public SubItem(int sid, String title, String note) {
  20. this.sid = sid;
  21. this.title = title;
  22. this.note = note;
  23. }
  24. public String getInfo(){
  25. return "id:"+this.sid+",名称:"+this.title+",简介:"+this.note;
  26. }
  27. }

第二步:设置关联


  
  1. class Item{
  2. private int iid;
  3. private String title;
  4. private String note;
  5. private SubItem[] subItems;
  6. public Item(int iid, String title, String note) {
  7. this.iid = iid;
  8. this.title = title;
  9. this.note = note;
  10. }
  11. //其他 setter getter 无参省略
  12. public SubItem[] getSubItems() {
  13. return subItems;
  14. }
  15. public void setSubItems(SubItem[] subItems) {
  16. this.subItems = subItems;
  17. }
  18. public String getInfo(){
  19. return "id:"+this.iid+",名称:"+this.title+",简介:"+this.note;
  20. }
  21. }
  22. class SubItem{
  23. private int sid;
  24. private String title;
  25. private String note;
  26. private Item item;
  27. public SubItem(int sid, String title, String note) {
  28. this.sid = sid;
  29. this.title = title;
  30. this.note = note;
  31. }
  32. public Item getItem() {
  33. return item;
  34. }
  35. public void setItem(Item item) {
  36. this.item = item;
  37. }
  38. public String getInfo(){
  39. return "id:"+this.sid+",名称:"+this.title+",简介:"+this.note;
  40. }
  41. }

第三步:设置并取得数据


  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //准备出所有独立对象
  6. Item item = new Item(100,"化工专业","搞化学的");
  7. SubItem subItemA = new SubItem(1001,"炼油","炼油的");
  8. SubItem subItemB = new SubItem(1002,"提纯","提纯的");
  9. //设置彼此引用关系
  10. item.setSubItems(new SubItem[]{subItemA,subItemB});
  11. subItemA.setItem(item);
  12. subItemB.setItem(item);
  13. //取出数据
  14. System.out.println(subItemA.getInfo());
  15. System.out.println(subItemA.getItem().getInfo());
  16. System.out.println(item.getInfo());
  17. for(int i=0;i<item.getSubItems().length;i++){
  18. System.out.println(item.getSubItems()[i].getInfo());
  19. }
  20. }
  21. }

以上是基本功,以后开发都要基于此步骤。

3、双向一对多映射

【举例】:用户-课程-考试成绩

要求:

  • 根据数据表结构进行简单Java类转换;
  • 实现如下的信息输出:

           --根据课程取得全部参与该课程的用户信息及考试成绩;

           --用户可取得自己参加的所有课程信息及考试成绩;

【关系分析】:一个用户可参加多个课程,每个课程可以有多个用户参加,每个用户对于每个课程都会有成绩,此时最麻烦的是用户课程关系表中除了关联字段外,还有其他字段,这样的表一个要单独定义成一个实体类,所以,以上需要三个类。

第一步:完成基本字段


  
  1. class User{
  2. private int uid;
  3. private String name;
  4. public User(int uid, String name) {
  5. this.uid = uid;
  6. this.name = name;
  7. }
  8. public String getInfo(){
  9. return "用户编号:"+this.uid+",姓名:"+this.name;
  10. }
  11. }
  12. class Course{
  13. private int cid;
  14. private String title;
  15. private int num;
  16. private String note;
  17. public Course(int cid, String title, int num, String note) {
  18. this.cid = cid;
  19. this.title = title;
  20. this.num = num;
  21. this.note = note;
  22. }
  23. public String getInfo(){
  24. return "课程编号:"+this.cid+",名称:"+this.title +",课时:"+this.num+",简介:"+this.note;
  25. }
  26. }

第二步:进行字段关联,一般以外键为主;

为了进行关联,需要引入一个新的类:要保存用户、课程等信息的联系;


  
  1. class User{
  2. private int uid;
  3. private String name;
  4. private UserCourse ucs[];
  5. public User(int uid, String name) {
  6. this.uid = uid;
  7. this.name = name;
  8. }
  9. public String getInfo(){
  10. return "用户编号:"+this.uid+",姓名:"+this.name;
  11. }
  12. public UserCourse[] getUcs() {
  13. return ucs;
  14. }
  15. public void setUcs(UserCourse[] ucs) {
  16. this.ucs = ucs;
  17. }
  18. }
  19. class Course{
  20. private int cid;
  21. private String title;
  22. private int num;
  23. private String note;
  24. private UserCourse ucs[];
  25. public Course(int cid, String title, int num, String note) {
  26. this.cid = cid;
  27. this.title = title;
  28. this.num = num;
  29. this.note = note;
  30. }
  31. public String getInfo(){
  32. return "课程编号:"+this.cid+",名称:"+this.title +",课时:"+this.num+",简介:"+this.note;
  33. }
  34. public UserCourse[] getUcs() {
  35. return ucs;
  36. }
  37. public void setUcs(UserCourse[] ucs) {
  38. this.ucs = ucs;
  39. }
  40. }
  41. class UserCourse{
  42. private User user;
  43. private Course course;
  44. private String note;
  45. private double score;
  46. public UserCourse(User user, Course course, String note, double score) {
  47. this.user = user;
  48. this.course = course;
  49. this.note = note;
  50. this.score = score;
  51. }
  52. public User getUser() {
  53. return user;
  54. }
  55. public void setUser(User user) {
  56. this.user = user;
  57. }
  58. public Course getCourse() {
  59. return course;
  60. }
  61. public void setCourse(Course course) {
  62. this.course = course;
  63. }
  64. public double getScore() {
  65. return score;
  66. }
  67. public void setScore(double score) {
  68. this.score = score;
  69. }
  70. }

第三步:测试程序


  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:设置类与类之间的关系
  6. //1、定义单独类对象
  7. User userA = new User(100,"张三");
  8. User userB = new User(101,"李四");
  9. User userC = new User(102,"王五");
  10. Course courseA = new Course(1,"Oracle",10,"-");
  11. Course courseB = new Course(2,"Java",50,"-");
  12. //2、设置关联
  13. UserCourse uca = new UserCourse(userA,courseA,"无评价",100.0);
  14. UserCourse ucb = new UserCourse(userA,courseB,"无评价",90.0);
  15. UserCourse ucc = new UserCourse(userB,courseA,"无评价",99.0);
  16. UserCourse ucd = new UserCourse(userC,courseA,"无评价",79.0);
  17. UserCourse uce = new UserCourse(userC,courseB,"无评价",77.0);
  18. //3、在用户中设置关系
  19. userA.setUcs(new UserCourse[]{uca,ucb});
  20. userB.setUcs(new UserCourse[]{ucc});
  21. userC.setUcs(new UserCourse[]{ucd,uce});
  22. courseA.setUcs(new UserCourse[]{uca,ucc,ucd});
  23. courseB.setUcs(new UserCourse[]{ucb,uce});
  24. //第二部:获取数据
  25. //输出课程信息
  26. System.out.println(courseA.getInfo());
  27. System.out.println(courseB.getInfo());
  28. //输出参与该课程的用户信息
  29. for(int i=0;i<courseA.getUcs().length;i++){
  30. System.out.println("参与课程的用户信息:"+courseA.getUcs()[i].getUser().getInfo()+",考试成绩:"+courseA.getUcs()[i].getScore());
  31. }
  32. //输出用户信息及参与的所有课程
  33. System.out.println(userA.getInfo());
  34. for(int i=0;i<userA.getUcs().length;i++){
  35. System.out.println("参与课程:"+userA.getUcs()[i].getCourse().getInfo()+",考试成绩:"+userA.getUcs()[i].getScore());
  36. }
  37. }
  38. }

与上一个程序相比,唯一麻烦的是中间关系表上有其他字段,代码链是本次程序的重点所在。

4、多对多数据映射

【举例】:权限-权限组-用户-角色-角色权限组

要求:

  • 1、将数据还原为简单Java类;
  • 2、数据输出:

           --根据一个用户,输出其对应的角色以及每个角色对应的权限,以及包含的具体的权限详情;

           --一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出该权限的所有权限详情;

           --一个角色可以输出它所包含的管理员,每个管理员对应的具体权限,以及权限详情;

【第一步】:数据表转换为简答Java类


  
  1. //用户
  2. class User{
  3. private String userid;
  4. private String name;
  5. private String password;
  6. public User(String userid, String name, String password) {
  7. this.userid = userid;
  8. this.name = name;
  9. this.password = password;
  10. }
  11. public String getInfo(){
  12. return "用户ID:"+this.userid+",姓名:"+this.name+",密码"+this.password;
  13. }
  14. }
  15. //角色
  16. class Role{
  17. private int rid;
  18. private String title;
  19. public Role(int rid, String title) {
  20. this.rid = rid;
  21. this.title = title;
  22. }
  23. public String getInfo(){
  24. return "角色编号:"+this.rid+",名称:"+this.title;
  25. }
  26. }
  27. //权限组
  28. class Group{
  29. private int gid;
  30. private String title;
  31. public Group(int gid, String title) {
  32. this.gid = gid;
  33. this.title = title;
  34. }
  35. public String getInfo(){
  36. return "权限组编号:"+this.gid+",组名称:"+this.title;
  37. }
  38. }
  39. //权限
  40. class Action{
  41. private int aid;
  42. private String title;
  43. private String url;
  44. public Action(int aid, String title, String url) {
  45. this.aid = aid;
  46. this.title = title;
  47. this.url = url;
  48. }
  49. public String getInfo(){
  50. return "权限编号:"+this.aid+",权限名称:"+this.title+",权限路径:"+this.url;
  51. }
  52. }

第二步:设置关系

  • 一个角色包含多个用户,一对多关系;
  • 一个权限组包含多个权限,一对多关系;
  • 一个角色对应有多个权限组,每个权限组可能有多个角色,多对多关系;

  
  1. //用户
  2. class User{
  3. private String userid;
  4. private String name;
  5. private String password;
  6. private Role role;
  7. public User(String userid, String name, String password) {
  8. this.userid = userid;
  9. this.name = name;
  10. this.password = password;
  11. }
  12. public String getInfo(){
  13. return "用户ID:"+this.userid+",姓名:"+this.name+",密码"+this.password;
  14. }
  15. public Role getRole() {
  16. return role;
  17. }
  18. public void setRole(Role role) {
  19. this.role = role;
  20. }
  21. }
  22. //角色
  23. class Role{
  24. private int rid;
  25. private String title;
  26. private User users[];
  27. private Group groups[];
  28. public Role(int rid, String title) {
  29. this.rid = rid;
  30. this.title = title;
  31. }
  32. public String getInfo(){
  33. return "角色编号:"+this.rid+",名称:"+this.title;
  34. }
  35. public User[] getUsers() {
  36. return users;
  37. }
  38. public void setUsers(User[] users) {
  39. this.users = users;
  40. }
  41. public Group[] getGroups() {
  42. return groups;
  43. }
  44. public void setGroups(Group[] groups) {
  45. this.groups = groups;
  46. }
  47. }
  48. //权限组
  49. class Group{
  50. private int gid;
  51. private String title;
  52. private Action actions[];
  53. private Role roles[];
  54. public Group(int gid, String title) {
  55. this.gid = gid;
  56. this.title = title;
  57. }
  58. public String getInfo(){
  59. return "权限组编号:"+this.gid+",组名称:"+this.title;
  60. }
  61. public Action[] getActions() {
  62. return actions;
  63. }
  64. public void setActions(Action[] actions) {
  65. this.actions = actions;
  66. }
  67. public Role[] getRoles() {
  68. return roles;
  69. }
  70. public void setRoles(Role[] roles) {
  71. this.roles = roles;
  72. }
  73. }
  74. //权限
  75. class Action{
  76. private int aid;
  77. private String title;
  78. private String url;
  79. private Group group;
  80. public Action(int aid, String title, String url) {
  81. this.aid = aid;
  82. this.title = title;
  83. this.url = url;
  84. }
  85. public String getInfo(){
  86. return "权限编号:"+this.aid+",权限名称:"+this.title+",权限路径:"+this.url;
  87. }
  88. public Group getGroup() {
  89. return group;
  90. }
  91. public void setGroup(Group group) {
  92. this.group = group;
  93. }
  94. }

【第三步】:定义实例对象,测试程序


  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:根据表结构设置关系
  6. //1、定义单独类对象
  7. User ua = new User("user-a","用户A","1111");
  8. User ub = new User("user-b","用户B","1111");
  9. User uc = new User("user-c","用户C","1111");
  10. //2、定义权限
  11. Action act1 = new Action(1,"新闻管理","www....");
  12. Action act2 = new Action(2,"用户管理","www....");
  13. Action act3 = new Action(3,"备份管理","www....");
  14. Action act4 = new Action(4,"缓存管理","www....");
  15. Action act5 = new Action(5,"数据管理","www....");
  16. //3、定义权限组
  17. Group g1 = new Group(1,"数据管理");
  18. Group g2 = new Group(2,"人事管理");
  19. Group g3 = new Group(3,"信息管理");
  20. //4、定义角色信息
  21. Role r1 = new Role(10,"超级管理员角色");
  22. Role r2 = new Role(10,"普通管理员角色");
  23. //5、设置权限组与权限的关系,一对多
  24. act1.setGroup(g1);
  25. act2.setGroup(g1);
  26. act3.setGroup(g2);
  27. act4.setGroup(g2);
  28. act5.setGroup(g3);
  29. g1.setActions(new Action[]{act1,act2});
  30. g2.setActions(new Action[]{act3,act4});
  31. g3.setActions(new Action[]{act5});
  32. //6、权限组与角色的关系
  33. r1.setGroups(new Group[]{g1,g2,g3});
  34. r2.setGroups(new Group[]{g2,g3});
  35. g1.setRoles(new Role[]{r1});
  36. g2.setRoles(new Role[]{r1,r2});
  37. g3.setRoles(new Role[]{r1,r2});
  38. //7、定义用户与角色关系
  39. ua.setRole(r1);
  40. ub.setRole(r2);
  41. uc.setRole(r2);
  42. r1.setUsers(new User[]{ua});
  43. r2.setUsers(new User[]{ub,uc});
  44. }
  45. }

【第四步】:输出信息


  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //第一步:根据表结构设置关系
  6. //1、定义单独类对象
  7. User ua = new User("user-a","用户A","1111");
  8. User ub = new User("user-b","用户B","1111");
  9. User uc = new User("user-c","用户C","1111");
  10. //2、定义权限
  11. Action act1 = new Action(1,"新闻管理","www....");
  12. Action act2 = new Action(2,"用户管理","www....");
  13. Action act3 = new Action(3,"备份管理","www....");
  14. Action act4 = new Action(4,"缓存管理","www....");
  15. Action act5 = new Action(5,"数据管理","www....");
  16. //3、定义权限组
  17. Group g1 = new Group(1,"数据管理");
  18. Group g2 = new Group(2,"人事管理");
  19. Group g3 = new Group(3,"信息管理");
  20. //4、定义角色信息
  21. Role r1 = new Role(10,"超级管理员角色");
  22. Role r2 = new Role(10,"普通管理员角色");
  23. //5、设置权限组与权限的关系,一对多
  24. act1.setGroup(g1);
  25. act2.setGroup(g1);
  26. act3.setGroup(g2);
  27. act4.setGroup(g2);
  28. act5.setGroup(g3);
  29. g1.setActions(new Action[]{act1,act2});
  30. g2.setActions(new Action[]{act3,act4});
  31. g3.setActions(new Action[]{act5});
  32. //6、权限组与角色的关系
  33. r1.setGroups(new Group[]{g1,g2,g3});
  34. r2.setGroups(new Group[]{g2,g3});
  35. g1.setRoles(new Role[]{r1});
  36. g2.setRoles(new Role[]{r1,r2});
  37. g3.setRoles(new Role[]{r1,r2});
  38. //7、定义用户与角色关系
  39. ua.setRole(r1);
  40. ub.setRole(r2);
  41. uc.setRole(r2);
  42. r1.setUsers(new User[]{ua});
  43. r2.setUsers(new User[]{ub,uc});
  44. //第二步:取出数据
  45. //根据一个用户,输出其对应的角色以及每个角色对应的权限,以及包含的具体的权限详情;
  46. System.out.println(ua.getInfo());
  47. System.out.println("角色:"+ua.getRole().getInfo());
  48. for(int x=0;x<ua.getRole().getGroups().length;x++){
  49. System.out.println("权限组:"+ua.getRole().getGroups()[x].getInfo());
  50. for(int y=0;y<ua.getRole().getGroups()[x].getActions().length;y++){
  51. System.out.println("权限:"+ua.getRole().getGroups()[x].getActions()[y].getInfo());
  52. }
  53. }
  54. System.out.println("========================================");
  55. //一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出该权限的所有权限详情;
  56. System.out.println(act1.getInfo());
  57. for(int x=0;x<act1.getGroup().getRoles().length;x++){
  58. System.out.println("角色:"+act1.getGroup().getRoles()[x].getInfo());
  59. for(int y=0;y<act1.getGroup().getRoles()[x].getUsers().length;y++){
  60. System.out.println("用户"+act1.getGroup().getRoles()[x].getUsers()[y].getInfo());
  61. }
  62. }
  63. System.out.println("========================================");
  64. //一个角色可以输出它所包含的管理员,每个管理员对应的具体权限,以及权限详情;
  65. System.out.println(r1.getInfo());
  66. for(int x=0;x<r1.getUsers().length;x++){
  67. System.out.println("用户:"+r1.getUsers()[x].getInfo());
  68. for(int y=0;y<r1.getGroups().length;y++){
  69. System.out.println("权限组:"+r1.getGroups()[y].getInfo());
  70. for(int z=0;z<r1.getGroups()[y].getActions().length;z++){
  71. System.out.println("权限:"+r1.getGroups()[y].getActions()[z].getInfo());
  72. }
  73. }
  74. }
  75. }
  76. }

 

作于202004142310,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

 

文章来源: winter.blog.csdn.net,作者:Winter_world,版权归原作者所有,如需转载,请联系作者。

原文链接:winter.blog.csdn.net/article/details/105418417

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。