JPAManyToMany

 

package cn.itcast.bean;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;


@Entity
public class Student {
   private Integer id;
   private String name;
   private Set<Teacher> teachers=new HashSet<Teacher>();
 
   public Student(){}
 public Student(String name) {
  this.name = name;
 } 
 
 @ManyToMany(cascade=CascadeType.REFRESH)
 @JoinTable(name="student_teacher",inverseJoinColumns=@JoinColumn(name="teahcer_id"),joinColumns=@JoinColumn(name="student_id"))
 public Set<Teacher> getTeachers() {
  return teachers;
 }
 public void setTeachers(Set<Teacher> teachers) {
  this.teachers = teachers;
 }
 
   public void addTeachers(Teacher teacher){
    this.teachers.add(teacher);   
   }
    
   public void removeTeahcer(Teacher teacher){
    if(this.teachers.contains(teacher)){
     this.teachers.remove(teacher);
    }   
   }
 
 @Id @GeneratedValue
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 
 @Column(length=10,nullable=false)
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }    
}

-----------------------------------------------------------------------------------------------------------------------------------------

package cn.itcast.bean;
import java.util.Set;
import java.util.HashSet;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

@Entity
public class Teacher {
  private Integer id;
  private String name;
  private Set<Student> student= new HashSet<Student>();
 
  public Teacher(){}
  public Teacher(String name) {
 this.name = name;
}

@Override
public int hashCode() {
 final int prime = 31;
 int result = 1;
 result = prime * result + ((id == null) ? 0 : id.hashCode());
 return result;
}
@Override
public boolean equals(Object obj) {
 if (this == obj)
  return true;
 if (obj == null)
  return false;
 if (getClass() != obj.getClass())
  return false;
 Teacher other = (Teacher) obj;
 if (id == null) {
  if (other.id != null)
   return false;
 } else if (!id.equals(other.id))
  return false;
 return true;
}
@ManyToMany(cascade=CascadeType.REFRESH,mappedBy="teachers")
public Set<Student> getStudent() {
 return student;
}
public void setStudent(Set<Student> student) {
 this.student = student;
}
@Id @GeneratedValue
public Integer getId() {
 return id;
}
public void setId(Integer id) {
 this.id = id;
}
@Column(length=10,nullable=false)
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;

}
------------------------------------------------------------------------------------------------

junit

package junit.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.BeforeClass;
import org.junit.Test;

import cn.itcast.bean.Student;
import cn.itcast.bean.Teacher;

public class ManyToManyTest {

 @BeforeClass
 public static void setUpBeforeClass() throws Exception {
 }
 @Test public void save(){  
  EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");
  EntityManager em=factory.createEntityManager();
  em.getTransaction().begin();
  em.persist(new Student("小张"));
  em.persist(new Teacher("李勇老师"));
  em.getTransaction().commit();
  em.close();
        factory.close();
 }
 
 /**
  * 建立学生跟老师的关系
  */ 
 @Test public void buildTS(){  
  EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");
  EntityManager em=factory.createEntityManager();
  em.getTransaction().begin();
  Student student=em.find(Student.class,1);
  student.addTeachers(em.getReference(Teacher.class,1));
  em.getTransaction().commit();
  em.close();
        factory.close();
 }
 
 /**
  * 解除学生跟老师的关系
  */ 
 @Test public void deleteTS(){  
  EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");
  EntityManager em=factory.createEntityManager();
  em.getTransaction().begin();
  Student student=em.find(Student.class,1);
  student.removeTeahcer(em.getReference(Teacher.class,1));
  em.getTransaction().commit();
  em.close();
        factory.close();
 }
 
 /**
  * 删除老师
  */ 
 @Test public void deleteTeacher(){  
  EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");
  EntityManager em=factory.createEntityManager();
  em.getTransaction().begin();
  Student student=em.find(Student.class,1);
  Teacher teacher=em.getReference(Teacher.class,1);
  student.removeTeahcer(teacher);
  em.remove(teacher);
  em.getTransaction().commit();
  em.close();
        factory.close();
 }
 
 /**
  * 删除学生
  */ 
 @Test public void deleteStudent(){  
  EntityManagerFactory factory=Persistence.createEntityManagerFactory("itcast");
  EntityManager em=factory.createEntityManager();
  em.getTransaction().begin();
  Student student=em.getReference(Student.class,1);
  em.remove(student);
  em.getTransaction().commit();
  em.close();
        factory.close();
 } 
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值