Java简单类——多对多映射

  1 class Item {     // 父栏目
  2     private int iid ;
  3     private String name ;
  4     private String note ;
  5     private Subitem subitems [] ; //一个父栏目下有多个子栏目
  6     private Product products [] ; //一个栏目下包含多个商品
  7     public Item(int iid,String name,String note) {
  8         this.iid = iid ;
  9         this.name = name ;
 10         this.note = note ;
 11     }
 12     public void setSubitems(Subitem subitems[]) {
 13         this.subitems = subitems ;
 14     }
 15     public void setProducts(Product[] products) {
 16         this.products = products ;
 17     }
 18     public Product[] getProducts() {
 19         return this.products ;
 20     }
 21     public Subitem [] getSubitems() {
 22         return this.subitems ;
 23     }
 24     public String getInfo() {
 25         return "栏目编号:" + this.iid + ",名称:" + this.name + ",描述:" + this.note ;
 26     }
 27 }
 28 class Subitem {  // 子栏目
 29     private int sid ;
 30     private String name ;
 31     private String note ;
 32     private Item item ; // 一个子栏目对应一个父栏目
 33     private Product products [] ; //一个子栏目下包含多个商品
 34     public Subitem(int sid,String name,String note) {
 35         this.sid = sid ;
 36         this.name = name ;
 37         this.note = note ;
 38     }
 39     public void setItem(Item item) {
 40         this.item = item ;
 41     }
 42     public Item getItem() {
 43         return this.item ;
 44     }
 45     public void setProducts(Product products[]) {
 46         this.products = products ;
 47     }
 48     public Product[] getProducts() {
 49         return this.products ;
 50     }
 51     public String getInfo() {
 52         return "子栏目编号:" + this.sid + ",名称:" + this.name + ",描述:" + this.note ;
 53     }
 54 }
 55 class Product {  // 商品
 56     private int pid ;
 57     private String name ;
 58     private double price ;
 59     private Item item ;
 60     private Subitem subitem ;
 61     public Product(int pid,String name,double price) {
 62         this.pid = pid ;
 63         this.name = name ;
 64         this.price = price ;
 65     }
 66     public void setItem(Item item) {
 67         this.item = item ;
 68     }
 69     public Item getItem() {
 70         return this.item ;
 71     }
 72     public void setSubitem(Subitem subitem) {
 73         this.subitem = subitem ;
 74     }
 75     public Subitem getSubitem() {
 76         return this.subitem ;
 77     }
 78     public String getInfo() {
 79         return "商品编号:" + this.pid + ",名称:" + this.name + ",价格:" + this.price ;
 80     }
 81 }
 82 public class TestISP {
 83     public static void main(String args[]){
 84         //准备出单独的类对象
 85         Item item = new Item(1,"文具","-") ;
 86         Subitem suba = new Subitem(1001,"笔","-") ;
 87         Subitem subb = new Subitem(1002,"尺","-") ;
 88         Subitem subc = new Subitem(1003,"刀","-") ;
 89         Product proa = new Product(90001,"中性笔",2.0) ;
 90         Product prob = new Product(90002,"钢笔",10.0) ;
 91         Product proc = new Product(90003,"毛笔",8.0) ;
 92         Product prod = new Product(90004,"直尺",2.0) ;
 93         Product proe = new Product(90005,"三角尺",1.5) ;
 94         Product prof = new Product(90006,"美工刀",5.0) ;
 95         Product prog = new Product(90007,"剪刀",6.0) ;
 96         //设置类之间的引用关系
 97         suba.setItem(item) ;
 98         subb.setItem(item) ;
 99         subc.setItem(item) ;
100         item.setSubitems(new Subitem[]{suba,subb,subc}) ;
101         proa.setSubitem(suba) ;
102         proa.setItem(item) ;
103         prob.setSubitem(suba) ;
104         prob.setItem(item) ;
105         proc.setSubitem(suba) ;
106         proc.setItem(item) ;
107         prod.setSubitem(subb) ;
108         prod.setItem(item) ;
109         proe.setSubitem(subb) ;
110         proe.setItem(item) ;
111         prof.setSubitem(subc) ;
112         prof.setItem(item) ;
113         prog.setSubitem(subc) ;
114         prog.setItem(item) ;
115         suba.setProducts(new Product[] {proa,prob,proc}) ;
116         subb.setProducts(new Product[] {prod,proe}) ;
117         subc.setProducts(new Product[] {prof,prog}) ;
118         item.setProducts(new Product[] {proa,prob,proc,prod,proe,prof,prog}) ;
119         //取出数据
120         //1、通过一个类型找到全部的子类型
121         System.out.println(item.getInfo()) ;
122         for (int x = 0;x <item.getSubitems().length ;x ++ ){
123             System.out.println("\t|-" + item.getSubitems()[x].getInfo()) ;
124         }
125         System.out.println("--------------------------------------------------------------") ;
126         System.out.println(item.getInfo()) ;
127         for (int x = 0;x <item.getProducts().length ;x ++ ){
128             System.out.println("\t|-" + item.getProducts()[x].getInfo()) ;
129             System.out.println("\t|-" + item.getProducts()[x].getSubitem().getInfo()) ;
130         }
131         System.out.println("--------------------------------------------------------------") ;
132         System.out.println(subb.getInfo()) ;
133         for (int x = 0;x <subb.getProducts().length ;x ++ ){
134             System.out.println("\t|-" + subb.getProducts()[x].getInfo()) ;
135         }
136     }
137 }

第一次写上百行的代码啊QAQ,中间报错了几次折腾了好久才发现是尼玛设定set和get方法时竟然不知道怎么的把public写成了private,晕死,以后就知道了。错误如下图

最终完成时运行结果如下

时间: 2024-08-05 07:44:46

Java简单类——多对多映射的相关文章

数据表与简单java类——多对多映射

给定一张Meber和Product表,得到如下信息: 1.获取一个用户访问的所有商品信息 2.获取一个商品被哪些用户浏览过的信息 package Mapping_transformation; class Meber { private String name ; private int age ; private Product products[] ; //一个人浏览多个商品 public Meber(String name , int age) { this.name = name ; t

java 简单类

1 package 面向对象编程_封装性; 2 //1.类名称必须存在有意义,例如Book.Emp 3 //2.类之中所有的属性必须用private封装,封装后的属性必须提供有setter和getter方法 4 //3.类之中可以提供有多个构造方法,但是必须保留有一个无参构造方法 5 //4.类之中不允许出现任何的输出语句,所有信息输出必须交给被调用处输出 6 //5.类之中需要提供有一个取得对象完整信息的方法,暂定为:getInfo : 返回String数据 7 8 /** 9 * Creat

java日历类Calendar简单使用

import java.util.Calendar; import java.util.TimeZone; public class Test1 { public static void main(String[] args) { //指定东八区,即北京时间 Calendar cc = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); int year = cc.get(Calendar.YEAR); //月份是从0开始计数的,所

Java Calendar类简单用法

我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3832307.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验. 初始化 Calendar calendar = new GregorianCalendar(); set方法 calendar.set(Calendar.YEAR, year); get方法 int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

java时间类简单总结

java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个):  日期格式为:年月日时分秒(不包含毫秒部分) 两种方式创建:带参构造方法(long型参数:Data(long log)),不带参 常用方法:after(),before(),compareTo()等方法. 直接子类:java.sql.Data(用于提供数据库日期的表示)   日期格式为:年月日(只有日期,没有时间) 该类构造函数必须是带参数的(

【Hibernate步步为营】--多对多映射具体解释

上篇文章具体讨论了一对多映射,在一对多映射中单向的关联映射会有非常多问题,所以不建议使用假设非要採用一对多的映射的话能够考虑使用双向关联来优化之间的关系,一对多的映射事实上质上是在一的一端使用<many-to-one>标签来标明它们之间的关系,另外还须要在一的一端的对象中使用set标明集合映射. 一.单向多对多 仍然依照前几篇的文章格式来讨论.首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比方在人和职位之间,一个人能够有多个职位,并且一个职位也能够由多人来负责,所以它们之间就形

Mybatis(四) 高级映射,一对一,一对多,多对多映射

天气甚好,怎能不学习? 一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种关系来讲,比如有员工和部门,一个部门中有多个员工,从部门方看,是一对多关系,而多名员工属于一个部门,是多对一关系,那么如果我们的业务需求只需要通过部门查找到所有的员工,那么我们就只需要进行单向一对多的映射,如果我们需要通过员工来查询出对应的部门,那么我们就需要进行单向多对一的映射,而如果我们这两个业

【Hibernate步步为营】--多对多映射详解

上篇文章详细讨论了一对多映射,在一对多映射中单向的关联映射会有很多问题,所以不建议使用如果非要采用一对多的映射的话可以考虑使用双向关联来优化之间的关系,一对多的映射其实质上是在一的一端使用<many-to-one>标签来标明它们之间的关系,另外还需要在一的一端的对象中使用set标明集合映射. 一.单向多对多 仍然按照前几篇的文章格式来讨论,首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比如在人和职位之间,一个人可以有多个职位,而且一个职位也可以由多人来负责,所以它们之间就形成了

mybatis懒加载特性详解,以及多对多映射详解

注意讲解都在代码中 准备数据库,测试数据,各位自己添加,因为是多对多,所以使用中间表: 用到的实体: 学生类: public class Student { private Integer sid; private String name; private Integer age; //一个学生有多个老师,一个老师有多个学生 private List<Teacher> teachers=new ArrayList<Teacher>(); setter.. getter.... to