Java

Java 일지 #21 (20210827) 수강신청 등록, 조회

uni5948 2021. 9. 4. 21:56

21. 수강 신청 등록, 조회

-수강 신청 등록, 조회

 *db, 시퀀스 연결(EnrollCourse.DB.java)

private MongoDatabase db = null;

    private MongoCollection<DocumentenrollCollection = null;

    private MongoCollection<DocumentseqEnrollCollection = null;

    private static EnrollCourseDB enrollCourseDB = new EnrollCourseDB();

 

    public EnrollCourseDB() {

        MongoClient client = MongoClients.create(Setting.URL);

        this.db = client.getDatabase(Setting.DBNAME);

        this.enrollCollection = db.getCollection(Setting.ENROLL_COLLECTION);

        this.seqEnrollCollection = db.getCollection(Setting.SEQ_ENROLL_COLLECTION);

    }

 

    public static EnrollCourseDB getInstance() {

        return enrollCourseDB;

    }

 *수강 신청 등록(EnrollCourse.DB.java)

 **수강 신청 등록할 때 학생, 과목의 정보가 들어가야 하므로 각각의 id를 같이 등록한다.

 public int insertEnroll(Enrollcourse enrollcoursethrows Exception {

        Bson query = Filters.eq("_id""SEQ_ENROLL_NO");

        Bson update = Updates.inc("seq"1);

        Document doc = seqEnrollCollection.findOneAndUpdate(queryupdate);

 

        long encid = doc.getLong("seq");

        Document document = new Document();

        document.append("_id"encid);

        document.append("room"enrollcourse.getEncroom());

        document.append("date"enrollcourse.getEncdate());

        document.append("student"enrollcourse.getStudent().getStdid());

        document.append("course"enrollcourse.getCourse().getCorcode());

 

        InsertOneResult result = enrollCollection.insertOne(document);

        if (result.getInsertedId().asInt64().getValue() == encid) {

            return 1;

        }

        return 0;

    }

 *학생, 과목의 정보 넘기기(StudentDB.java, Course.java)

 // 학생 번호가 전달되면 학생 1명의 정보 리턴(enrollcourse에서 사용)

public Student selectStudentOne(Long nothrows Exception {

        Bson queryBson = Filters.eq("_id"no);

        MongoCursor<Documentcursor = this.studentCollection.find(queryBson).iterator();

        if (cursor.hasNext()) {

            Document doc = cursor.next();

            return new Student(

                doc.getLong("_id"), 

                doc.getString("name"), 

                doc.getString("major"), 

                doc.getDate("Date"),

                null

            );

        }

        return null;

    }

 

 // 과목 번호가 전달되면 학생 1명의 정보 리턴(enrollcourse에서 사용)

    public Course selectCourseOne(Long nothrows Exception {

        Bson queryBson = Filters.eq("_id"no);

        MongoCursor<Documentcursor = this.courseCollection.find(queryBson).iterator();

 

        if (cursor.hasNext()) {

            Document doc = cursor.next();

            //교수 번호를 이용해서 교수 정보 가져오기

            Professor p = ProfessorDB.getInstance().selectProfessorOne(doc.getLong("professor"));

            return new Course(

                doc.getLong("_id"), 

                doc.getString("name"), 

                doc.getInteger("point"), 

                doc.getDate("date"),

                p,  //교수정보 포함

                null

            );

        }

        return null;

    }

 

*등록하기(App.java)

 **학생과 과목의 정보를 같이 등록하기 위해 기존에 등록한 id 값을 가져온다.

   // 학생 한명, 과목 가져오기(학생, 과목 번호)

        Student s1 = StudentDB.getInstance().selectStudentOne(4L);

        Course c1 = CourseDB.getInstance().selectCourseOne(2L);

 

        // 수강신청 내용 생성

        Enrollcourse enrollcourse = new Enrollcourse();

        enrollcourse.setEncno(null);

        enrollcourse.setEncroom("강의실3");

        enrollcourse.setEncdate(new Date());

        enrollcourse.setStudent(s1); // 학생정보 조회

        enrollcourse.setCourse(c1); // 과목정보 조회

        // 과목 등록

        int ret = EnrollCourseDB.getInstance().insertEnroll(enrollcourse);

        // 결과 출력

        System.out.println(ret);

 *db 확인

db 확인

 *전체 목록 조회(EnrollCourse.DB.java)

public List<Enrollcourseselectenroll() throws Exception {

        MongoCursor<Documentcursor = this.enrollCollection.find().sort(Filters.eq("_id"1)).cursor();

        List<Enrollcourselist = new ArrayList<>();

        while (cursor.hasNext()) {

            Document doc = cursor.next();

            // 학생, 과목 번호를 이용해서 다른 db에서 정보를 받음

            Student s = StudentDB.getInstance().selectStudentOne(doc.getLong("student"));

            Course c = CourseDB.getInstance().selectCourseOne(doc.getLong("course"));

            Enrollcourse enrollcourse = new Enrollcourse();

            enrollcourse.setEncno(doc.getLong("_id"));

            enrollcourse.setEncroom(doc.getString("room"));

            enrollcourse.setEncdate(doc.getDate("date"));

            enrollcourse.setStudent(s);

            enrollcourse.setCourse(c);

 

            list.add(enrollcourse);

        }

        return list;

    }

 *조회하기(App.java)

 List<Enrollcourselist = EnrollCourseDB.getInstance().selectenroll();

        for (Enrollcourse enrollcourse : list) {

        System.out.println(enrollcourse.getEncno());

        System.out.println(enrollcourse.getEncroom());

        System.out.println(enrollcourse.getEncdate());

        System.out.println(enrollcourse.getStudent().getStdid());

        System.out.println(enrollcourse.getCourse().getCorcode());

        }

 *출력값 확인

출력값 확인

 *학생별 수강 내역 조회(EnrollCourse.DB.java)

 **교수의 정보는 이전에 과목 정보에 포함 했으므로 과목정보만 불러온다.

public List<EnrollcourseselectEnrollStudent(long nothrows Exception {

        //수강 컬렉션에서 student이 같은 것( _id, classroom, course, student, date)

        Bson query = Filters.eq("student"no);

        MongoCursor<Documentcursor = this.enrollCollection.find(query).sort(Filters.eq("_id"1)).cursor();

        List<Enrollcourselist = new ArrayList<>();

        while (cursor.hasNext()) {

            // 수강번호, 강의실, 등록일자, 학번, 과목번호

            Document doc = cursor.next();

            long _id = doc.getLong("_id");  //수강신청번호

            String classroom = doc.getString("room");  //강의실

            long course =doc.getLong("course"); //과목번호

            long student =doc.getLong("student");   //학번

            Date date = doc.getDate("date"); //등록일자

            //리턴하기 위해 객체 생성

            Enrollcourse enrollcourse = new Enrollcourse();

            // 0. 학생 번호를 이용해서 학생 정보를 가져오기

            Student s = StudentDB.getInstance().selectStudentOne(student);

            enrollcourse.setStudent(s);

            // 1. 과목 번호를 이용해서 과목 정보를 가져오기(교수 정보도 포함됨)

            Course c = CourseDB.getInstance().selectCourseOne(course);

            enrollcourse.setCourse(c);

            // 2. list 에 추가해서 반환

            enrollcourse.setEncno(_id); 

            enrollcourse.setEncroom(classroom);

            enrollcourse.setEncdate(date);

 

            list.add(enrollcourse);

        }

        return list;

    }

 *조회하기(App.java)

 **교수의 정보는 과목 정보에 포함되어 있으므로 과목의 정보를 불러오고 그 안에서 필요한 교수의 정보를 가져온다.

List<Enrollcourselist = EnrollCourseDB.getInstance().selectEnrollStudent(4L);

        for (Enrollcourse enrollcourse : list) {

            System.out.println(enrollcourse.getEncno());

            System.out.println(enrollcourse.getEncroom());

            System.out.println(enrollcourse.getStudent().getStdname());

            System.out.println(enrollcourse.getCourse().getCorname());

            System.out.println(enrollcourse.getCourse().getCorpoint());

            System.out.println(enrollcourse.getCourse().getProfessor().getPrfname());        

        }   

 *출력값 확인

출력값 확인

 

스프링
spring 검색 - 4 번째 파일 설치 후 재시작
view 스프링 검색 - maven 2.5.4 - java - 이름 - jar -11 -dev tools, lombok, web
d 드라이브 boot 폴더 생성

이클립스(스프링)
헬프 - 마켓플레이스 -sys 검색 -  4.11.1 설치 

 

스프링 설치