表:一對多:(簡單代碼示例)
數據庫表建立:
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類:dom
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
+ "]";
}
}ide
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;
}this
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", salary=" + salary
+"]";
}.net
}get
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(){
}
}io
多對多:
數據庫表建立:
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
+ "]";
}
}table
dao實現類:
public class CustomerDaoImpl {
private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());class
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);
}
}test
// 查詢客戶時要不要查詢客戶擁有的訂單呢? //看需求(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); }}