SsY/Class

[Spring] 012. 마이바티스(mybatis) 관찰 실습(3)

planet-si 2023. 7. 18. 15:18
728x90
mybatisWork03
■■■ SpringMVC + Annotation + Mybatis 프로젝트 실습 03 ■■■

○ 프로젝트 
   : mybatisWork03
   
○ 관련 라이브러리
   : 위에서 정리한 내용 참조
   
○ 기능 구현
   : 성적 관리
     이 과정에서 mybatis 활용
     
○ 데이터베이스 관련 객체 준비
   - 사용 계정 : scott
   - 테이블 : TBL_STUDENT
   - 테이블 구조 : MID          NUMBER         -- PK
                  ,NAME         VARCHAR2(30)
                  ,TEL          VARCHAR2(40)
   - 테이블 : TBL_GRADE
   - 테이블 구조 : SID          NUMBER         -- PK
                  ,SUB1         NUMBER(3)
                  ,SUB2         NUMBER(3)
                  ,SUB3         NUMBER(3)
                  
   - 뷰 : STUDENTVIEW
      · 뷰 구조 : SID, NAME, TEL , SUB
                                   ----- 참조 레코드 수
                  
   - 뷰 : GRADEVIEW
      · 뷰 구조 : SID, NAME, SUB1, SUB2, SUB3, TOT, AVG, CH
                                                ---  ---  --
                                                총점 평균 등급(합격, 과락, 불합격)
   
○ 물리적 파일 구성 
   - mybatisWork03_scott.sql     → 데이터베이스 관련 작업
   
   - StudentDTO.java             → 데이터베이스 객체 자료형 클래스(DTO)
                                    학생 데이터 저장 및 전송
   - GradeDTO.java               → 데이터베이스 객체 자료형 클래스(DTO)
                                    성적 데이터 저장 및 전송
                                    
   - IStudentDAO.java            → 인터페이스
   - IGradeDAO.java              → 인터페이스
   
   - StudentDAO.xml              → mybatis 환경 설정 파일 활용
   - GradeDAO.xml                → mybatis 환경 설정 파일 활용

   - StudentController.java      → mybatis 객체 활용(Controller)
   - GradeController.java        → mybatis 객체 활용(Controller)
   
   - StudentList.jsp             → View 페이지 활용
                                    학생 명단 출력 레이아웃 구성
   - StudentInsertForm.jsp       → View 페이지 활용
                                    학생 데이터 입력 폼 구성
   - GradeList.jsp               → View 페이지 활용
                                    성적 명단 출력 레이아웃 구성
   - GradeInsertForm.jsp         → View 페이지 활용
                                    성적 데이터 입력 폼 구성
   
   - dispatcher-servlet.xml      → mybatis 객체 등록 및 활용
   - web.xml                     → front controller 객체 등록 및 인코딩 설정(필터 활용)
   
○ 사용자 최초 요청 주소
   http://localhost:3306/mybatisWork03/studentlist.action
  • mybatisWork03_scott.sql
더보기
SELECT USER
FROM DUAL;
--==>> SCOTT

--○ 실습 테이블 생성
CREATE TABLE TBL_STUDENT
( SID   NUMBER
, NAME  VARCHAR2(30)
, TEL   VARCHAR2(40)
, CONSTRAINT STUDENT_SID_PK PRIMARY KEY(SID)
);
--==>> Table TBL_STUDENT이(가) 생성되었습니다.

--○ 샘플 데이터 입력
INSERT INTO TBL_STUDENT(SID, NAME, TEL)
VALUES(1,'권희정', '010-0000-0000');
INSERT INTO TBL_STUDENT(SID, NAME, TEL)
VALUES(2,'김지혜', '010-1111-1111');
INSERT INTO TBL_STUDENT(SID, NAME, TEL)
VALUES(3,'문상훈', '010-2222-2222');
INSERT INTO TBL_STUDENT(SID, NAME, TEL)
VALUES(4,'박혜서', '010-3333-3333');
--==>> 1 행 이(가) 삽입되었습니다. * 4

--○ 커밋
COMMIT;
--==>> 커밋 완료.

--○ 실습 테이블 생성
CREATE TABLE TBL_GRADE
( SID   NUMBER
, SUB1  NUMBER(3)
, SUB2  NUMBER(3)
, SUB3  NUMBER(3)
, CONSTRAINT GRADE_SID_PK PRIMARY KEY(SID)
, CONSTRAINT GRADE_SID_FK FOREIGN KEY(SID)
             REFERENCES TBL_STUDENT(SID)
, CONSTRAINT GRADE_SUB1_CK CHECK(SUB1 BETWEEN 0 AND 100)
, CONSTRAINT GRADE_SUB2_CK CHECK(SUB2 BETWEEN 0 AND 100)
, CONSTRAINT GRADE_SUB3_CK CHECK(SUB3 BETWEEN 0 AND 100)
)
--==>>> Table TBL_GRADE이(가) 생성되었습니다.

--○ 샘플 데이터 입력
INSERT INTO TBL_GRADE(SID, SUB1, SUB2, SUB3)
VALUES(1,90,80,70);
INSERT INTO TBL_GRADE(SID, SUB1, SUB2, SUB3)
VALUES(2,92,82,72);
INSERT INTO TBL_GRADE(SID, SUB1, SUB2, SUB3)
VALUES(3,98,88,78);
INSERT INTO TBL_GRADE(SID, SUB1, SUB2, SUB3)
VALUES(4,50,70,90);
--==>> 1 행 이(가) 삽입되었습니다. * 4

--○ 커밋
COMMIT;
--==>> 커밋 완료.

--○ 뷰 생성(STUDENTVIEW)
CREATE OR REPLACE VIEW STUDENTVIEW
AS
SELECT SID, NAME, TEL
    , (SELECT COUNT(*)
       FROM TBL_GRADE
       WHERE SID = S.SID ) AS SUB
FROM TBL_STUDENT S;
--==>> View STUDENTVIEW이(가) 생성되었습니다.

--○ 뷰 생성(GRADEVIEW)
CREATE OR REPLACE VIEW GRADEVIEW
AS
SELECT S.SID AS SID
     , S.NAME AS NAME
     , G.SUB1 AS SUB1
     , G.SUB2 AS SUB2
     , G.SUB3 AS SUB3
     , (G.SUB1 + G.SUB2 + G.SUB3) AS TOT
     , (G.SUB1 + G.SUB2 + G.SUB3)/3 AS AVG
     , (CASE WHEN (G.SUB1 + G.SUB2 + G.SUB3)/3 < 60 THEN '불합격' 
             WHEN (G.SUB1 <=40) OR (G.SUB2 <=40) OR (G.SUB3 <=40) THEN '과락'
             ELSE '합격'
        END) AS CH
FROM TBL_STUDENT S JOIN TBL_GRADE G
ON S.SID = G.SID;
--==>>  View GRADEVIEW이(가) 생성되었습니다.

--○ 뷰 조회
SELECT SID, NAME, TEL, SUB
FROM STUDENTVIEW;
--==>>
/*
1	권희정	010-0000-0000	1
2	김지혜	010-1111-1111	1
3	문상훈	010-2222-2222	1
4	박혜서	010-3333-3333	1
*/
SELECT SID, NAME, SUB1, SUB2, SUB3, TOT, AVG, CH
FROM GRADEVIEW;
--==>>
/*
1	권희정	90	80	70	240	80	합격
2	김지혜	92	82	72	246	82	합격
3	문상훈	98	88	78	264	88	합격
4	박혜서	50	70	90	210	70	합격
*/

--○ 인원 수 확인
SELECT COUNT(*) AS COUNT
FROM TBL_STUDENT;
--==>> 4

mybatisWork03.war
7.10MB

728x90