java 双向映射_菜鸡的Java笔记 - java 双向一对多映射

双向一对多映射

two-way

开发要求:

根据数据表的结构进行简单java类的转换:

要求实现如下的输出信息:

可以根据课程取得全部参与此课程用户的信息

输出课程信息:

输出参与此课程用户的信息以及考试成绩

用户可以取得自己所参加的课程信息

输出某一个用户的信息

输出该用户所参加的所有课程信息以及对应的考试成绩

关系上来讲:一个用户可以参加多门课程,一门课程可以有多个用户参加,每个用户在每个课程内都会有一个成绩

此时最麻烦的问题在于用户-课程关系表中除了关联字段之外,还包含有其他字段,这样的表一定要作为一个实体类出现

所以现在需要定义有三个类

第一步:先完成基本字段

classUser{privateString userid:privateString name:publicUser(String userid,String name){this.userid =userid:this.name =name:

}publicString getlnfo(){return "用户编号:"+this.userid+",姓名"+this.name:

}

}classCourse{private intcid:privateString title:private intnum:privateString note:public Course(int cid,String title,intnum,String note){this.cid =cid:this.title =title:this.num =num:this.note =note:

}publicString getlnfo(){return "课程编号:"+this.cid+",名称:"+this.title+",课时:"+this.num+",简介:"+this.note:

}

}public classTwoWay{public static voidmain(String args[]){

}

}

第二步:进行字段关联的时候都是以外键为主

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

classUser{privateString userid;privateString name;publicUser(String userid,String name){this.userid =userid;this.name =name;

}publicString getlnfo(){return "用户编号:"+this.userid+",姓名"+this.name;

}

}classCourse{private intcid;privateString title;private intnum;privateString note;public Course(int cid,String title,intnum,String note){this.cid =cid;this.title =title;this.num =num;this.note =note;

}publicString getlnfo(){return "课程编号:"+this.cid+",名称:"+this.title+",课时:"+this.num+",简介:"+this.note;

}publicCourse getCourse(){return this.course;

}publicUser getUser(){return this.user;

}

}classUserCourse{privateUser user;privateCourse course;privateString note;private doublescore;public UserCourse(User user,Course course,String note,doublescore){this.user =user;this.course =course;this.note =note;this.score =score;

}

}public classTwoWay{public static voidmain(String args[]){

}

}

第三步:程序测试

classUser{privateString userid;privateString name;privateUserCourse ucs[];publicUser(String userid,String name){this.userid =userid;this.name =name;

}public voidsetUcs(UserCourse ucs[]){this.ucs =ucs;

}publicUserCourse[] getUcs(){return this.ucs;

}publicString getlnfo(){return "用户编号:"+this.userid+",姓名"+this.name;

}

}classCourse{private intcid;privateString title;private intnum;privateString note;privateUserCourse ucs[];public Course(int cid,String title,intnum,String note){this.cid =cid;this.title =title;this.num =num;this.note =note;

}public voidsetUcs(UserCourse ucs[]){this.ucs =ucs;

}publicUserCourse[] getUcs(){return this.ucs;

}publicString getlnfo(){return "课程编号:"+this.cid+",名称:"+this.title+",课时:"+this.num+",简介:"+this.note;

}

}classUserCourse{privateUser user;privateCourse course;privateString note;private doublescore;public UserCourse(User user,Course course,String note,doublescore){this.user =user;this.course =course;this.note =note;this.score =score;

}public doublegetScore(){return this.score;

}publicCourse getCourse(){return this.course;

}publicUser getUser(){return this.user;

}

}public classTwoWay{public static voidmain(String args[]){//第一步:设置类与类之间的关系//1.定义单独的类对象

User ua = new User("zhangsan","张三");

User ub= new User("lisi","李四");

User uc= new User("wangwu","王五");

Course c1= new Course(1,"Oracle",50,"-");

Course c2= new Course(2,"java",300,"-");//2.设置彼此的关系

UserCourse uca = new UserCourse(ua,c1,"暂无评价",90.0);

UserCourse ucb= new UserCourse(ua,c2,"暂无评价",91.0);

UserCourse ucc= new UserCourse(ub,c1,"暂无评价",92.0);

UserCourse ucd= new UserCourse(uc,c1,"暂无评价",93.0);

UserCourse uce= new UserCourse(uc,c2,"暂无评价",94.0);// ua.setUcs(newUserCourse[]{uca,ucb});

ub.setUcs(newUserCourse[]{ucc});

uc.setUcs(newUserCourse[]{ucd,uce});

c1.setUcs(newUserCourse[]{uca,ucc,ucd});

c2.setUcs(newUserCourse[]{ucb,uce});//第二步:取得数据

System.out.println(c1.getlnfo()); //输出一个课程信息

for(int x = 0;x

System.out.println("\t|-【参与用户】 "+c1.getUcs()[x].getUser().getlnfo()+",考试成绩"+c1.getUcs()[x].getScore());

}

System.out.println("*******************************************");

System.out.println(ua.getlnfo());for(int x = 0;x

System.out.println("\t|-【参与用户】 "+ua.getUcs()[x].getCourse().getlnfo()+",考试成绩"+ua.getUcs()[x].getScore());

}

}

}

本程序与之前的代码相比,唯一麻烦的地方在于中间的关系表上的其他字段

代码链是本次讲解的重点所在

不晕的方法(笨方法容易理解的方法)

System.out.println(ua.getlnfo());

UserCourse uct[]=ua.getUcs();for(int x = 0;x

Course c =uct[x].getCourse();

System.out.println("\t|-【参与用户】 "+c.getlnfo()+",考试成绩"+uct[x].getScore());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值