본문 바로가기
학원수업/4월

04/04 국비학원 개발자과정 - 88회차 React, Spring QnA게시판

by 코딩마스터^^ 2023. 4. 4.

qna 게시판 테이블 정리

 

MASTER_BOARD--리뷰게시판, 양도게시판->실제 사용하지는 않고 있음

MBLOG_FILE-실제 사용 안하고있다.

첨부파일이 QNA게시판에 들어 가 있는 상태...?

나잖아...QNA....

 

사이드 테이블 - MBLOG_FILE, QNA_COMMENT(화면에 대한 설계부분에 반영을 한 상태)

이미지를 다운 받아야 한다.

 

알아야 할 것들....

1. INSERT() 메소드가 왜 Object타입을 리턴 하는가?

실제로 많이 문제가 되는 부분이다.

2. 다중 insert문 사용방법

하나의 인서트문에서 여러개의 row을 insert하는 방법

다중 쿼리문, 동적쿼리문 - JDBC API를 사용할 때와 차이점

 

 

FILE_NO는 시퀀스로 처리할 예정

BOARD_TYPE - id='qna' id='review' id='default'

FILE_PATH - fullpath

FILE_NAME - men.png

FILE_SIZE - 1.56kb od mb

MASTER_BNO - 현재는 필요 없다. 리뷰게시판이나 다른 쪽에서 필요한 마스터 테이블이다. - 디폴트 0

QNA_BNO - qnaInsert할 때에 결정됨. 이미지 업로드 시에는 반영될 수 없다.

파일을 업로드시에 insert문을 처리하고 글쓰기 저장시에 update문으로 처리해야한다.

 

 

세미콜론 찍으면 무조건 터진다. 주의하자!!!!

 

update할때는 주의한다. 다중처리를 하기 때문이다.

 

클래스 쪼개기

리액트에서는 컴포넌트 쪼개기 연습하기

하나에서 처리하는것 보다 여러개로 쪼개서 하는것이 좋다.

 

시점에 대한것을 생각해보기

imageUpload

fileUpload

imageGet

언제 file insert를 해야 할까?

내생각- 파일 업로드 할때?-아니다.... 업로드 할때 insert하는것이 맞다.

 

메소드를 쪼개서 처리해야 하는지 여부 - 내가 결정할 수 있나?

로직과 dao는 메소드 선언이 안되어있다.

 

fileUpload - 파일 업로드이다. 이미지 업로드가 아니다.

imageGet - 이미지를 불러오기 - QuillEditor

 

Controller- Logic - Dao 결정

 

구분하기!!

이미지를 선택 하자마자 이미지 업로드가 진행됩니다.

이 말은 글쓰기에서 저장 버튼을 누른 시점이 아닌 것입니다.

이미지가 업로드 될 때 qna_bno를 채번할 수 있나요?

만일 위에서 qna_bno를 채번 할 수 없는 상황이라고 생각한다면

언젠가 채번할 수 있는 상태가 되는 건가요?

어떤 이미지가 몇장이 선택 되었는지는 언제 결정 되는걸까요?

QuillEditor에 이미지를 선택 할 때마다 파일명이 결정된다.

iomageUpload처리 - fileInsert

단 qna_bno를 가질 수 없다.

왜냐하면 글쓰기 버튼을 아직 누르지 않았으니까.

 

 

https://mine-it-record.tistory.com/62

 

[ORACLE] 오라클_시퀀스(NEXTVAL , CURRVAL) 사용법

일단 NEXTVAL 와 CURRVAL을 사용하기에 앞서 시퀀스를 생성하고 오도록 하자. (https://mine-it-record.tistory.com/61) [ORACLE]오라클_시퀀스(Sequence) 생성 / 수정 / 삭제 시퀀스(Sequence) - 유일한 값을 생성해주는

mine-it-record.tistory.com

이미지를 추가하면 MBLOG_FILE테이블에 각각 여러개의 이미지가 들어간다.

 

키값 소문자 반드시 맞춰준다.

화면에서 받는것은 소문자로 하기로 약속했다. 나만의 룰...

 

글쓰기 완료 후 리스트로 돌아가도록 const navigate=useNavigate() 훅을 선언하고

navigate("리스크 링크") 를 추가해주었다.

위의 주석 처리된 코드는 쓰지 않는다. 훅 사용해줘야... 아니면 계속 모든것이 새로고침 되어버린다...

 

맵이랑 리스트는 Object타입이다. 그런데 디비에는 mem_no를 number타입이라고 했잖아...

그래서 Map에서 get으로 mom_no만 가져온 후 parseInt로 int타입으로 바꿔준다.

무슨말이지...? 외워라!!!!

여러 이미지를 넣으면 fileNames에 여러개 파일 이름 있다.

그래서 fileNames를 List<Map<String, Object>> 타입으로 선언을 해서 쪼개서 쓴다.

먼저 HashMap으로 쪼개고 그걸 다시 넣고 리스트에 넣는다...

"," 콤마 기준으로 자르자...

subString 은 파라미터 두개이다. 1번째부터 fileNames의 길이보다 하나 작게 잘라라는 뜻. 

splict은 "," 콤마 기준으로 나눠서 이제 담아라... toString() 스트링 타입으로 담아라 라는 뜻이다.

 

위에 return을 널로보내니까 nullPointException이 뜨지...

오타수정했다.

화면에서 글쓰기 하니 RepleBoardLogic에서 fileName이랑 path랑 d-size가 찍혔다.

 

 

댓글