开发者学堂课程【Java 面试疑难点串讲1:面试技巧及语言基础:多对多关系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/24/detail/502
多对多关系
内容介绍
一、类与表的映射转换
一、类与表的映射转换
在整个 Java 基础部分里面对于数据表和简单 java 类的映射转换处理是最为核心的,因为在这一操作之中,强化了学员的几点要求:
引用传递的应用模式,让同学彻底明白,在 java 里面对于数据类型可以自定义
需要对数据类型划分非常清楚;
合成设计模式的应用,就相当于组合概念:
数组的理解以及应用,同时可以认真领悟到数组的问题。现实生活中的多对多的关系:
1.你去图书馆借书:你可以同时借多本书,一本书也可以同时被多个人借,一本书也可以同时被多个人借,相当于两个一对多关系,所以这个就可以变为多对多的应用。
2.你开车旅游:你这一生可能开50辆车,但是每辆车都有可能有其它人继续开;
那么在程序里面,对于多的概念就利用数组的方式来理解。那么以后的学习可能有链表,或者是类集开发框架帮助我们实现。
package cn.mldn.demo;
class Member { //每一个member的对象就表示一个人的信息
private int mid ;
private String name ;
int age ;
private Book [] books ;//一个人有多本
class Book { 每一个Book类的对象就表示一本书的信息
private String title ;
private double price ;
private Member[] members ;//一本书可能有多个人看过
public class TestIODemo {
public static void main(String[] args) throws Exception {
注:只要是多就使用数组来描述,但是数组本身有如下的缺陷:
数组的长度是固定的,不可改变;
对于数据的删除处理非常的复杂;
package cn.mldn.demo;
class Member { //每一个member的对象就表示一个人的信息
private int mid ;
private String name ;
int age ;
private Book [] books ;//一个人有多本
class Book { 每一个Book类的对象就表示一本书的信息
private String title ;
private double price ;
private Member[] members ;//一本书可能有多个人看过
public class TestIODemo {
public static void main(String[] args) throws Exception {
//[
数据表实体表定义] 首先定义一个个对象的类的实体(对象),现在彼此之间没有任何的联系
Member memA = new Member(1,"
老张",68) ;
Member memB = new Member(2,"老李",18) ;
Member memC = new Member(3,"老王",56) ;
Book b1 = new Book("Java开发实战经典",79.8);
Book b2 = new Book("Java WEB开发实战经典",69.8);
Book b3 = new Book("Oracle开发实战经典",89.8);
//[数据表关系表定义] ,数据的取出在以后的开发中会在[数据层]出现
//根据多对多来定义关系,以后会有数据库动态对应,这个时候会有外键来约束
memA. setBooks(new Book[] {b1,b2} );
memB. setBooks(new Book[] {b2,b3} );
memC. setBooks(new Book[] {b1,b3} );
b1.setMembers(new Member[] {memA, memC});
b2.setMembers (new Member[]{memA, memB});
b3.setMembers(new Member[] {memB, memC});
//就需要依据关系输出,就是显示层或控制层的要求
//
输出一个人的所有读书的信息
for (int х=0;х< memA.getBooks().length ; x++)
System.out.println(memn
);