-
게시판 파일첨부 ( 2. DB에 저장 및 detail에 Attach )Spring 2023. 4. 14. 15:14
DB에 파일 데이터 저장 및 게시글에 불러오기
: 게시글 쓰기에서 파일을 객체화하고 임시 폴더에 저장하므로써 데이터를 저장할 준비를 마쳤다.
이번에는 기존에 있던 게시글 form에 append 된 파일 객체를 함께 submit 하고 port_attach 테이블에 저장할 것이다.
1 ) BoardVO 변경
기존에 있던 BoardVO에 AttachFileVO 를 ArrayList형태로 저장할 수 있는 필드를 선언했다.
이로서, BoardVO를 매개변수로 선언하면 AttachFileVO 객체 형태의 데이터를 배열로 저장해서 전달할 수 있다.
2 ) Controller, Service
Controller와 Service 는 기존과 동일한 형태다 다만, BoardVO내부에 AttachFileVO가 추가되어있다.
ServiceImpl에는 변화가 있었는데
bm.write(board) 를 실행하면 null로 저장되어 있던 board_no 에 특정 값이 저장된다.
이 board_no를 각각의 attach파일에 저장함으로서, 파일들을 게시판 번호에 종속 시킬 수 있다.
다음과 같이 port_attach 테이블의 board_no 가 port_board 테이블의 board_no 를 참조하도록 외래키를 설정했다.
각각의 attach 파일에 board_no를 저장한 뒤에 bam.insert(attach);를 실행한다.
3) Mapper
BoardAttachMapper는 다음과 같이, 글쓰기 명령을 실행할 때 첨부파일에 대한 데이터를 port_attach에 저장하기 위한
insert와 디테일에서 첨부파일을 불러오기 위한 attachlist 함수로 구성했다.
4) 결과
정상적으로 port_attach 리스트에 데이터가 저장됐다. 해당 rows 들은 board_no에 외래키 설정이 ON DELETE CASCADE 이기 때문에 port_board 테이블의 데이터를 삭제하면 해당 데이터의 board_no와 묶여있는 모든 attach 데이터들이 삭제된다.
게시글에 첨부파일 불러오기
1) Controller , Service
첨부 파일을 불러올 때는 해당 게시글의 board_no만 매개변수로 이용하고, ArrayList<AttachFileVO> 형태로 리턴값을 받는다.
2) Mapper
3) JavaScript
input에서 board_no를 가져오고 getJSON으로 AttachFileVO 객체를 불러온다.
'Spring' 카테고리의 다른 글
API 키 숨기기 ( Spring Legacy 에서 properties 이용하기 ) (0) 2023.05.14 gitignore 생성 ( spring legacy ) (0) 2023.05.14 게시판 파일 첨부 (1. 파일을 임시 보관소에 저장하기 ) (0) 2023.04.14 ajax (0) 2023.04.10 회원가입, 로그인, 게시판 백엔드 실습( 댓글 리스트 , pagenation ) (0) 2023.04.06