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
728x90