表:一对多:(简单代码示例)
数据库表创建: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(); 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); } public void testQuery(){ Teacher t = dao.findTeacherById(2); System.out.println(t); System.out.println("他教过的学员:"); for(Student s:t.getStudents()) System.out.println(s); }}