20230911 (월)
<<오늘 배울 내용>>
Controller -> Service -> Mapper -> 결과물 -> (1.jsp, 2.redirect) ...
<mapper>
namespace = "interface"
- 인터페이스의 이름, 패키지명을 포함해서 만듦.
==> 파일위치 (동일) 뭐..?
CRUD - select, insert, update, delete : 공통속성으로 id를 가짐.
id="" : interface의 메소드명과 동일
<[!CDATA[ ... ]]>
SQL 문장 안에 < >
- SQL : 연산자
- XML : 태그처리
<<영속 영역의 CRUD 구현>>
1. create(insert) 처리
- 시퀀스로 PK 가 자동으로 정해지는 경우
- PK 처리 방식
* insert만 처리되고 생성된 PK 값을 알 필요가 없는 경우
* insert 문이 실행되고 생성된 PK 값을 알아야 하는 경우
--> insert 후 그 키로 다른 테이블에 FK로 후속 작업을 해야 하는 경우
예) 첨부파일 저장
public void insert(BoardVO board); // insert 후에 bno를 모름
public void insertSelectKey(BoardVO board); // insert 후에 bno를 추출
- Oracle : sequence
- MySQL : auto_increment
Oracle : select seq.nextValue from ..
<비즈니스 계층>
Controller -> Service -> Mapper
<<프레젠테이션(웹) 계층의 CRUD 구현>>
<BoardController의 작성>
==> 삭제랑 수정 바뀜..
- Controller는 JUnitTest로만 테스트가 불가능하며, http 요청이 필요하다.
- get 요청을 하는 메소드는 일반적으로 리턴타입이 void이다.
- post일 경우에는 string이다.
<TDD (Test Driven Development) - 테스트 기반 개발> => 이력서에 추가할 수 있다.
<화면 처리>
교재하고 약간 다르게 갈거임.
sd2 css 프레임워크를 교재에서 사용중인데, 그 사이트가 없어짐.
그래서...
우리는 부트스트랩으로 유사하게 구현할 것임.
1. views/layouts
- 각 페이지의 공통 부분을 독립파일로 정의
- 각 페이지에서 include로 사용
* 코드 중복 해결
- 구성 파일
* header.jsp
* menu.jsp
* footer.jsp