対多、多対
国クラス
@Entity @Table(名前 = 「国」) パブリック クラス国{ @Id // 配列同一 @GeneratedValue(戦略= GenerationType.IDENTITYを) プライベート整数countryId; プライベート文字列の国; // mappedBy:関連付けを維持して指定します(提供属性名は、オブジェクトに関連付けられている) @OneToMany(= CascadeType.ALLカスケード、mappedBy =で" 国" ) // @JoinColumn(名前= "countryId") プライベートリスト<市> =市内の新しい新しいのArrayList <>(); // 関連のプロパティ
シティクラス
@Entity @Table(名前 = " 市" ) パブリック クラスの市{ @Id @GeneratedValue(戦略 = GenerationType.IDENTITYを) 民間整数cityid。 プライベート文字列のcityname。 @ManyToOne(カスケード = CascadeType.ALL) 民間国国。
CountryDao層
パブリック インターフェース CountryDaoはJpaRepositoryを拡張<カントリー、整数> { }
CityDao層
パブリック インターフェース CityDaoはJpaRepositoryを拡張<市、整数> { }
CountryController
@Controller パブリック クラスCountryController { @Autowired CountryDaoのDAO。 @Autowired CityDaoのdao1。 @Autowired StudentDaoのdao2。 @Autowired TeacherDaoのdao3。 // 级联增加 @RequestMapping(" / onetomany " ) 公共の文字列onetomany(){ 国C1 = 新しい国(); c1.setCountry(" 中国万岁ChinaNo.1 " ); 市CT1 = 新都市(); ct1.setCityname("香港、中国" ); 市CT2 = 新しい新都市(); ct2.setCityname(" 中国台湾」); // 状態と都市の間のメンテナンス対多の関係 c1.getCitys()を追加します(CT1);. C1.getCitys() .add(CT2); dao.save(C1); リターン " 成功" ; } // リレーショナルクエリ @RequestMapping(" /はgetCountry " ) @ResponseBody パブリックオブジェクトGET (){ 戻りdao.findAll(); } // レベル削除ユナイテッド @RequestMapping(" / deleteCountry " ) パブリック文字列()[削除] { // NIE取得 国の一つdao.getOneを=(1。); ; dao.delete(ワン) リターン " 成功" ; } // 全国の都市にリンククエリ @ RequestMapping(" / getCity " ) @ResponseBody パブリックオブジェクトgetCity(){ リターンdao1.findAll(); } // 生徒と教師を追加 RequestMapping @(" / saveStudent " ) 公共の文字列(){保存 学生STUDENT1 = 新しい学生(" 利亚东哥" ); 学生student2 = 新しい学生(" 玉姐" ); 学生student3 = 新しい学生(" 雄哥" ); 教師T1 = 新しい教師(" 山间的风" )。 student1.getTeachers()を追加する(T1)。 student2.getTeachers()を追加する(T1)。 student3.getTeachers()を追加する(T1)。 dao2.saveAll(は、Arrays.asList(STUDENT1、student2、student3))。 復帰 "成功を」。 } @RequestMapping(" / saveTeacher " ) パブリック文字列saveTeacher(){ 教師T1 = 新しい教師(" 帅的离谱" )。 一覧 <学生>すべて= dao2.findAll(); t1.getStudents()のaddAll(すべて)。 dao3.save(T1)。 戻る 「成功を」。 } @RequestMapping(" / getTeacher " ) @ResponseBody パブリックオブジェクトgetTeacher(){ リターンdao3.getOne(1 )。 } }
多くの多くの
先生
@Entity @Table(名 = " teacherinfo " ) パブリック クラス教師{ @Id @GeneratedValue(戦略 = GenerationType.IDENTITYを) プライベート整数teacherid。 プライベート文字列のteachername。 @ManyToMany(カスケード = CascadeType.ALL) // mappedby属性绝对不能再存在@JoinTable和@JoinColumn注解时使用 @JoinTable(名前= " student_teacher "、joinColumns = @ JoinColumn(名前= " teacherid " )、 inverseJoinColumns = @ JoinColumn (名前=" studentid " )) のプライベートリスト<学生>学生= 新しい ArrayListを<>();
学生
@Entity @Table(名 = " studentinfo " ) パブリック クラスの学生{ @Id @GeneratedValue プライベート整数ID。 プライベート文字列名; プライベート整数歳。 プライベート整数のセックス。 @Column(名前 = " stu_name ")
TeacherDao
パブリック インターフェース TeacherDaoはJpaRepositoryを拡張<教師、整数> { }
StudentDao
パブリック インターフェース StudentDaoはJpaRepositoryを拡張<学生、整数> { }
StudentController
@Controller パブリック クラスStudentController { @Autowired ; StudentDAO StudentDAO @Autowired TeacherDao teacherDao; // 生徒と教師を追加 RequestMapping(@ " / addstu " ) @ResponseBody 公共の文字列のaddstu(){ 学生STUDENT1 = 新新学生("リリー" )。 STUDENT2学生 = 新新学生(「明確に」); 学生student3 = 新新学生(「アン」); 教師teacher1は = 新しい先生("筱丽" ); 。student1.getTeachers()(teacher1)を追加します。 。student2.getTeachers()(teacher1)を追加します。 。student3.getTeachers()(teacher1)を追加します。 studentDao.saveAll(は、Arrays.asList(STUDENT1、student2、student3))。 リターン 「SUCCESS 」。 } // 多对多添加老师 @RequestMapping(" / addDom " ) @ResponseBody パブリック文字列addDom(){ 教師教師 = 新しい教師(" 李老师")。 一覧 <学生>すべて= studentDao.findAll(); teacher.getStudents()のaddAll(すべて);. TeacherDao.save(教師); 戻り値 " SUCCESS " ; } // 多くの関連クエリ(無限ループの注意! !!) @RequestMapping(" /ます。getDOM " ) @ResponseBody パブリックオブジェクトます。getDOM(){ 戻り teacherDao.getOne(1 ); } }