dao 층 다 중 테이블 조작
예 를 들 어 teacher 와 student 의 다양한 관계 에 대해 teacher 표,student 표,teacherstudent 표 후 자바 에서 디자인 은 teacher 가 세 개의 표를 유지 합 니 다.student 는 teacher 를 포기 할 수 있 습 니 다.student 표 조작.학생 이 선생님 을 바 꾸 는 이런 일이 발생 하면 teacherstudent 표 작업 시 update 를 사용 할 수 없 으 며,먼저 delete 한 후 add 를 사용 하여 이 루어 집 니 다.
디자인 코드 는 다음 과 같 습 니 다.
domain 클래스:
package com.hao.domain;
import java.util.Set;
public class Teacher {
    private String id;
    private String name;
    private double salary;
    private Set students;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public Set getStudents() {
        return students;
    }
    public void setStudents(Set students) {
        this.students = students;
    }
}   package com.hao.domain;
import java.util.Set;
public class Student {
    private String id;
    private String name;
    //   teachers     dao    ,                
    private Set teachers;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Set getTeachers() {
        return teachers;
    }
    public void setTeachers(Set teachers) {
        this.teachers = teachers;
    }
}   dao 층:
package com.hao.dao;
import com.hao.domain.Student;
import com.hao.domain.Teacher;
import com.hao.utils.DaoUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TeacherDao {
    private QueryRunner qr = new QueryRunner(DaoUtils.getDataSource());
    public void add(Teacher teacher) {
        try {
            //       
            String sql = "insert into teacher(id,name,salary) values(?,?,?)";
            qr.update(sql, teacher.getId(), teacher.getName(), teacher.getSalary());
            Set students = teacher.getStudents();
            String teacherId = teacher.getId();
            for (Student student : students) {
                //       
                sql = "insert into student(id,name) values(?,?)";
                qr.update(sql, student.getId(), student.getName());
                //       
                sql = "insert into teacher_student(teacher_id,student_id) values(?,?)";
                qr.update(teacherId, student.getId());
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    public void delete(String id) {
        String sql = "delete from teacher where id = ?";
        try {
            qr.update(sql, id);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    public void update(Teacher teacher) {
        try {
            //     
            String sql = "update teacher set name=?,salary=? where id=?";
            qr.update(sql, teacher.getName(), teacher.getSalary(), teacher.getId());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    public Teacher find(String id) {
        try {
            //    
            String sql = "select name,salary from teacher where id=?";
            Teacher teacher = qr.query(sql, new BeanHandler(Teacher.class), id);
            teacher.setId(id);
            //       ,      ,   
            sql = "select st.id,st.name from student st,teacher_student te where te.teacher_id=? and te.student_i=dst.id";
            List students = qr.query(sql, new BeanListHandler(Student.class), id);
            teacher.setStudents(new HashSet(students));
            return teacher;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}     이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.