表:一对多,多对多

表:一对多:(简单代码示例)
数据库表创建:
create table department(
 id int primary key,
 name varchar(100)
);
create table employee(
 id int primary key,
 name varchar(100),
 salary float(8,2),
 dept_id int,
 constraint dept_id_fk foreign key(dept_id) references department(id)
);

domain类:

Department:
public class Department {
 private Integer id;
 private String name;
 private List<Employee> emps=new ArrayList<Employee>();
 public  Integer getId() {
  return id;
 }
 public void setId( Integer id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public List<Employee> getEmps() {
  return emps;
 }
 public void setEmps(List<Employee> emps) {
  this.emps = emps;
 }
 @Override
 public String toString() {
  return "Department [id=" + id + ", name=" + name + ", emps=" + emps
    + "]";
 }
 
}

Employee:
public class Employee {
 private  Integer id;
 private String name;
 private Float salary;
 public  Integer getId() {
  return id;
 }
 public void setId( Integer id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Float getSalary() {
  return salary;
 }
 public void setSalary(Float salary) {
  this.salary = salary;
 }

 @Override
 public String toString() {
  return "Employee [id=" + id + ", name=" + name + ", salary=" + salary
    +"]";
 }

 
}

dao实现:
public class DaoImpl {
 private QueryRunner qr =new QueryRunner(DBCPUtil.getDataSource());
 public void addDepartment(Department department) throws SQLException{
  qr.update("insert into department(id,name) values(?,?)", department.getId(),department.getName());
  List<Employee> emps=department.getEmps();
  if(emps!=null&&emps.size()>0){
   for(Employee emp:emps){
    qr.update("insert into employee(id,name,salary,dept_id) values(?,?,?,?)",emp.getId(),emp.getName(),emp.getSalary(),department.getId());
   }
  }
 }
 public void findDepartmentById(){
  
 }
}

多对多:
数据库表创建:
create table teacher(
 id int primary key,
 name varchar(100),
 money float(8,2)
);
create table student(
 id int primary key,
 name varchar(100),
 grade varchar(100)
);
create table teacher_student(
 t_id int,
 s_id int,
 primary key(t_id,s_id),
 constraint t_id_fk foreign key(t_id) references teacher(id),
 constraint s_id_fk foreign key(s_id) references student(id)
);
domain类:
student:
public class Student {
 private int id;
 private String name;
 private String grade;
 private List<Teacher> teachers = new ArrayList<Teacher>();
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getGrade() {
  return grade;
 }
 public void setGrade(String grade) {
  this.grade = grade;
 }
 public List<Teacher> getTeachers() {
  return teachers;
 }
 public void setTeachers(List<Teacher> teachers) {
  this.teachers = teachers;
 }
 @Override
 public String toString() {
  return "Student [id=" + id + ", name=" + name + ", grade=" + grade
    + "]";
 }
 
}
teacher类:
public class Teacher {
 private int id;// Integer
 private String name;
 private float money;
 private List<Student> students = new ArrayList<Student>();
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public float getMoney() {
  return money;
 }
 public void setMoney(float money) {
  this.money = money;
 }
 public List<Student> getStudents() {
  return students;
 }
 public void setStudents(List<Student> students) {
  this.students = students;
 }
 @Override
 public String toString() {
  return "Teacher [id=" + id + ", name=" + name + ", money=" + money
    + "]";
 }
 
}

dao实现类:
public class CustomerDaoImpl {
 private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());

 public void addCustomer(Customer c) {
  try {
   // 保存客户的基本信息
   qr.update("insert into customer values(?,?)", c.getId(),
     c.getName());
   // 看看客户有没有订单,有订单还要进行保存
   List<Orders> os = c.getOrders();
   if (os != null && os.size() > 0) {
    for (Orders o : os) {
     qr.update("insert into orders values(?,?,?,?)", o.getId(),
       o.getNum(), o.getMoney(), c.getId());
    }
   }
  } catch (SQLException e) {
   throw new RuntimeException(e);
  }
 }

 // 查询客户时要不要查询客户拥有的订单呢? //看需求(Hibernate用的延迟加载)

 // 要查询出来
 public Customer findByCustomerId(int customerId) {
  try {
   Customer c = qr.query("select * from customer where id=?",
     new BeanHandler<Customer>(Customer.class), customerId);
   if(c!=null){
    //有查询结果
    //查询该客户的订单
    List<Orders> os = qr.query("select * from orders where customer_id=?", new BeanListHandler<Orders>(Orders.class), c.getId());
    c.setOrders(os);
   }
   return c;
  } catch (SQLException e) {
   throw new RuntimeException(e);
  }
 }
}

test类:
public class TeacherDaoImplTest {
 private TeacherDaoImpl dao = new TeacherDaoImpl();
 @Test
 public void addTest(){
  Teacher t1= new Teacher();
  t1.setId(1);
  t1.setName("QB");
  t1.setMoney(10000);
  
  Teacher t2= new Teacher();
  t2.setId(2);
  t2.setName("WZT");
  t2.setMoney(10000);
  
  Student s1 = new Student();
  s1.setId(1);
  s1.setName("HCH");
  s1.setGrade("A");
  
  Student s2 = new Student();
  s2.setId(2);
  s2.setName("HFZJ");
  s2.setGrade("A");
  
  //建立关系
  t1.getStudents().add(s1);
  t1.getStudents().add(s2);
  
  t2.getStudents().add(s1);
  t2.getStudents().add(s2);
  
  dao.addTeacher(t1);
  dao.addTeacher(t2);
  
 }
 @Test
 public void testQuery(){
  Teacher t = dao.findTeacherById(2);
  System.out.println(t);
  System.out.println("他教过的学员:");
  for(Student s:t.getStudents())
   System.out.println(s);
 }
}

你可能感兴趣的:(表:一对多,多对多)