ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게시판 파일첨부 ( 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 객체를 불러온다. 

     

     

Designed by Tistory.