概念
对于数据表与简单java类之间的映射最好的解决步骤,先抛开所有的关联字段不看,写出本类的基本组成,而后通过引用配置关联字段的关系。
例子
第一步 根据表的结构关系进行对象的配置
第二步 根据要求通过结构获取数据
package com.msc.example;
import javax.swing.*;
class Privilege{
private long pid ;
private String pname ;
private Role roles[] ;
public Privilege() {};
public Privilege(long pid,String pname){
this.pid = pid ;
this.pname = pname ;
}
public void setRoles(Role[] roles) {
this.roles = roles;
}
public void setPid(long pid) {
this.pid = pid;
}
public void setPname(String pname) {
this.pname = pname;
}
public long getPid() {
return pid;
}
public Role[] getRoles() {
return roles;
}
public String getPname() {
return pname;
}
public String getInfo(){
return "【权限信息】 权限ID = " + this.pid + ",权限名称 = " + this.pname;
}
}
class Role{
private long rid ;
private String rname ;
private Member members[] ;
private Privilege privileges[] ;
public Role() {} ;
public Role(long rid,String rname){
this.rid = rid ;
this.rname = rname ;
}
public long getRid() {
return rid;
}
public void setRid(long rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public Member[] getMembers() {
return members;
}
public void setMembers(Member[] members) {
this.members = members;
}
public Privilege[] getPrivileges() {
return privileges;
}
public void setPrivileges(Privilege[] privileges) {
this.privileges = privileges;
}
public String getInfo(){
return "【角色信息】 角色ID = " + this.rid + ",角色名字 = " + this.rname;
}
}
class Member{
private long mid ;
private String mname ;
private Role roles[] ;
public Member() {} ;
public Member(long mid,String mname){
this.mid = mid ;
this. mname = mname ;
}
public void setRoles(Role[] roles) {
this.roles = roles;
}
public Role[] getRoles() {
return roles;
}
public long getMid() {
return mid;
}
public void setMid(long mid) {
this.mid = mid;
}
public String getMname() {
return mname;
}
public void setMname(String mname) {
this.mname = mname;
}
public String getInfo(){
return "【用户信息】 用户ID = " + this.mid + ",用户姓名 = " + this.mname;
}
}
public class MapDemo {
public static void main(String[] args) {
memA.setRoles(new Role[]{roleA,roleC});
memB.setRoles(new Role[]{roleB});
memC.setRoles(new Role[]{roleD});
memD.setRoles(new Role[]{roleB});
roleA.setMembers(new Member[]{memA});
roleB.setMembers(new Member[]{memB,memC});
roleC.setMembers(new Member[]{memA});
roleD.setMembers(new Member[]{memD});
roleA.setPrivileges(new Privilege[]{priA,priC});
roleB.setPrivileges(new Privilege[]{priA,priB,priC});
roleC.setPrivileges(new Privilege[]{priC});
roleD.setPrivileges(new Privilege[]{priA});
priA.setRoles(new Role[]{roleA,roleB,roleD});
priB.setRoles(new Role[]{roleB});
priC.setRoles(new Role[]{roleC});
System.out.println("--------用户找角色+权限: "+memA.getMname()+"-------------");
for(Role role : memA.getRoles()){
System.out.println(memA.getInfo()+role.getInfo());
for(Privilege pri : role.getPrivileges()){
System.out.println(" "+pri.getInfo());
}
}
/* for(int i = 0 ; i < memA.getRoles().length;i++){
System.out.println(memA.getInfo()+memA.getRoles()[i].getInfo());
for(int j = 0 ; j < memA.getRoles()[i].getPrivileges().length;j++){
System.out.println(" "+memA.getRoles()[i].getPrivileges()[j].getInfo());
}
}*/
System.out.println("-------------角色找用户权限: "+roleB.getRname()+"-------------");
System.out.println(roleB.getInfo());
for(Member mem : roleB.getMembers()){
System.out.println(" " + mem.getInfo());
}
for (Privilege pri : roleB.getPrivileges()){
System.out.println(" " + pri.getInfo());
}
System.out.println("------------根据权限找用户:"+priB.getPname()+"-------------");
for(Role role : priB.getRoles()){
for(Member mem : role.getMembers()){
System.out.println(" " + mem.getInfo());
}
}
}
}
输出