不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java的数据表与简单Java类的映射
基本映射关系:
数据实体表设计 = 类的定义
表中的字段 = 类的成员属性
表的外键关联 = 引用关联
表的一行数据 = 类的一个实例化对象
表的多行数据 = 对象数组
示例一:
表一:部门(部门编号、部门名称、部门位置)
表二:雇员(雇员编号、部门编号、姓名、职位、基本工资、佣金、领导编号)
关联:
一个部门多个雇员;
一个雇员属于一个部门;
一个雇员有一个领导
要求:
根据部门信息获得:
一个部门完整信息;
一个部门雇员的完整信息;
一个雇员对应的领导的信息;
根据雇员信息获得:
一个雇员所在的部门信息;
一个雇员的领导信息
class Dept{
private long deptno;
private String dname;
private String location;
private Emp emps[]; // 一个部门多个雇员信息
public Dept(long deptno, String dname, String location) {
this.deptno = deptno;
this.dname = dname;
this.location = location;
}
public String getInfo() {
return "【部门信息】 部门编号:" + this.deptno + "、部门名称:" + this.dname + "、部门位置:" + this.location;
}
public void setEmps(Emp emps[]) {
this.emps = emps;
}
public Emp [] getEmps() {
return this.emps;
}
}
class Emp{
private long empno;
private String ename;
private String job;
private double sal;
private double comm;
private Dept dept; // 所属部门
private Emp mgrEmp; // 所属领导
public Emp(long empno, String ename, String job, double sal, double comm) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public String getInfo() {
return "【雇员信息】 雇员编号:" + this.empno + "、雇员姓名:" + this.ename + "、雇员职位:" + this.job + "、基本工资" + this.sal + "、佣金:" + this.comm;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public void setMgr(Emp mgrEmp) {
this.mgrEmp = mgrEmp;
}
public Dept getDept() {
return this.dept;
}
public Emp getMgr() {
return this.mgrEmp;
}
}
public class CompDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义实例化对象,此时并没有关联定义
Dept dept = new Dept(10, "财务部", "上海");
Emp empA = new Emp(10000L, "Jiang", "clerk", 10000.0, 0.0);
Emp empB = new Emp(10000L, "Wen", "manager", 20000.0, 0.0);
Emp empC = new Emp(10000L, "Jie", "president", 30000.0, 0.0);
// 为对象进行关联设置
// 设置雇员与部门关联
empA.setDept(dept);
empB.setDept(dept);
empC.setDept(dept);
// 设置雇员与领导关联
empA.setMgr(empB);
empB.setMgr(empC);
// 部门与雇员
dept.setEmps(new Emp[] {empA, empB, empC});
// 根据关系获取数据
// 部门信息
System.out.println(dept.getInfo());
// 部门的雇员信息
for (int i = 0; i < dept.getEmps().length; i++) {
System.out.println("|-" + dept.getEmps()[i].getInfo());
// 雇员领导信息
if(dept.getEmps()[i].getMgr() != null) {
System.out.println(" |-" + dept.getEmps()[i].getMgr().getInfo());
}
}
System.out.println("--------------------------------");
// 根据雇员获取部门信息
System.out.println(empA.getDept().getInfo());
// 根据雇员获取领导
System.out.println(empA.getMgr().getInfo());
}
}
程序输出:
【部门信息】 部门编号:10、部门名称:财务部、部门位置:上海 |-【雇员信息】 雇员编号:10000、雇员姓名:Jiang、雇员职位:clerk、基本工资10000.0、佣金:0.0 |-【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0 |-【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0 |-【雇员信息】 雇员编号:10000、雇员姓名:Jie、雇员职位:president、基本工资30000.0、佣金:0.0 |-【雇员信息】 雇员编号:10000、雇员姓名:Jie、雇员职位:president、基本工资30000.0、佣金:0.0 -------------------------------- 【部门信息】 部门编号:10、部门名称:财务部、部门位置:上海 【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0
示例二:
表一:用户(用户ID、姓名)
表二:角色(角色ID、名称)
表三:权限(权限ID、角色ID、名称)
关联:
一个用户可以有多个角色;
一个角色可以有多个用户;
一个角色可以有多个权限。
要求:
一个用户可以找到对应的角色,以及每个角色对应的权限;
根据角色找到该角色下的所有权限,以及用于此角色的所有用户信息;
根据一个权限找到拥有此权限的所有用户信息。
class Member{
private String mid;
private String name;
private Role roles[]; // 一个用户拥有多个角色
public Member(String mid, String name) {
this.mid = mid;
this.name = name;
}
public String getInfo() {
return "【用户信息】mid = " + this.mid + "、name = " + this.name;
}
public void setRole(Role roles[]) {
this.roles = roles;
}
public Role [] getRole() {
return this.roles;
}
}
class Role{
private long rid;
private String title;
private Member mems[]; // 一个角色有多个用户
private Privilege privileges[]; //一个角色拥有多个权限
public Role(long rid, String title) {
this.rid = rid;
this.title = title;
}
public String getInfo() {
return "【角色信息】rid = " + this.rid + "、title = " + this.title;
}
public void setMem(Member mems[]) {
this.mems = mems;
}
public void setPriv(Privilege privileges[]) {
this.privileges = privileges;
}
public Member [] getMem() {
return mems;
}
public Privilege [] getPriv() {
return privileges;
}
}
class Privilege{
private long pid;
private String title;
private Role roles[]; // 一个权限属于多个角色
public Privilege(long pid, String title) {
this.pid = pid;
this.title = title;
}
public String getInfo() {
return "【权限信息】 pid = " + this.pid + "、title = " + this.title;
}
public void setRole(Role roles[]) {
this.roles = roles;
}
public Role [] getRole() {
return roles;
}
}
public class JavaDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 根据结构设置对象数据
Member memA = new Member("a", "Jiang");
Member memB = new Member("b", "Wen");
Role roleA = new Role(1L, "系统配置");
Role roleB = new Role(2L, "备份管理");
Role roleC = new Role(3L, "人事管理");
Privilege privA = new Privilege(1000L, "系统初始化");
Privilege privB = new Privilege(1001L, "系统维护");
Privilege privC = new Privilege(2001L, "备份员工数据");
Privilege privD = new Privilege(2002L, "备份部门数据");
Privilege privE = new Privilege(3001L, "编辑员工信息");
Privilege privF = new Privilege(3002L, "浏览员工信息");
// 增加角色与权限的对应关系
roleA.setPriv(new Privilege[] {privA, privB});
roleB.setPriv(new Privilege[] {privC, privD});
roleC.setPriv(new Privilege[] {privE, privF});
// 增加权限与角色的对应关系
privA.setRole(new Role[] {roleA});
privB.setRole(new Role[] {roleA});
privC.setRole(new Role[] {roleB});
privD.setRole(new Role[] {roleB});
privE.setRole(new Role[] {roleC});
privF.setRole(new Role[] {roleC});
// 增加用户与角色的对应关系
memA.setRole(new Role[] {roleA, roleB});
memB.setRole(new Role[] {roleA, roleB, roleC});
roleA.setMem(new Member[] {memA, memB});
roleB.setMem(new Member[] {memA, memB});
roleC.setMem(new Member[] {memB});
System.out.println("---------通过用户查找信息---------");
System.out.println(memA.getInfo());
for (int i = 0; i < memA.getRole().length; i++) {
System.out.println("--" + memA.getRole()[i].getInfo());
for (int j = 0; j < memA.getRole()[i].getPriv().length; j++) {
System.out.println("----" + memA.getRole()[i].getPriv()[j].getInfo());
}
}
System.out.println("---------通过角色查找信息---------");
System.out.println(roleB.getInfo());
System.out.println("浏览此角色下的权限信息");
for (int i = 0; i < roleB.getPriv().length; i++) {
System.out.println("--" + roleB.getPriv()[i].getInfo());
}
System.out.println("浏览此角色下的用户信息");
for (int i = 0; i < roleB.getMem().length; i++) {
System.out.println("--" + roleB.getMem()[i].getInfo());
}
System.out.println("---------通过权限查找用户信息---------");
System.out.println(privA.getInfo());
for (int i = 0; i < privA.getRole().length; i++) {
for (int j = 0; j < privA.getRole()[i].getMem().length; j++) {
System.out.println(privA.getRole()[i].getMem()[j].getInfo());
}
}
}
}
浙公网安备 33010602011771号