본문 바로가기

Spring Boot

(33)
JPA로 쿼리작성 1 (삭제&리스트출력) 51 : JPA로 쿼리작성 (SpringbootApi) MyBatis - mapper로 쿼리를 가지고 오는 방법 말고 jap를 사용하여 쿼리를 실행해보자. 이전까지 만들어왔던 SpringbootApi에 작성한다. BoardJpa boardjap 디렉토리 안에 board디렉토리 처럼 controller , model.. dwc04112.tistory.com 위 코드에서 다음과 같은 기능을 추가했습니다 Delete DELETE /boardjpa/{id} 구현 DB에 데이터를 DELETE 시키지 말고, board 컬럼 중 isDel 을 "Y"로 업데이트 저번에 작성한 Board부분 코드와 매우 유사하다. BoardJpaService public ApiResponse updateIsDelBoard(int id,..
51 : JPA로 CRUD 기능 구현 (SpringbootApi) MyBatis - mapper로 쿼리를 가지고 오는 방법 말고 jap를 사용하여 쿼리를 실행해보자. 이전까지 만들어왔던 SpringbootApi에 작성한다. BoardJpa boardjap 디렉토리 안에 board디렉토리 처럼 controller , model , service 구조로 디렉토리를 생성한다. 그리고 아래와 같이 파일을 생성해보자 controller.BoardJapController service.BoardJpaService dto.BoardDTO model.Board model.BoardRepository (인터페이스) model.Board [중요] JPA로 데이터를 가져오려면 (테이블과 매핑하려면) 테이블 정의한 객체 Board를 생성하고 @ Entity 어노테이션을 사용해야한다 (아래는..
50 : /test - sequence diagram 1. 토큰이 없을때 JwtRequestFilter - request.getHeader("Authorization")의 정보가 null이다. 따라서 if문을 통과하지 못하고 401 error와 "JWT Token does not begin with Bearer String" 예외가 발생한다 2. 틀린 토큰값 JwtRequestFilter - request.getHeader("Authorization")에 정보는 들어있어서 if문에 들어간다. jwtTokenUtil - getUsernameFromToken으로 이동 후 getClaimFromToken(token, Claims::getId) 에서 401 error 에러가 발생하고 "Unable to get JWT Token" 예외가 발생한다 3. 유효기간 지난..
49 : /authenticate - Sequence Diagram (Springboot) Start url에서 /authenticate를 실어서 authenticate을 요청한다 JwtRequest body에는 e-mail, password가 들어간다 JwtAuthenticationController createAuthenticationToken(JwtRequest request) > 요청으로 들어온email과 password가 들어있다 아래의 내용의 코트를 호출하는 컨트롤러 역할을 한다 JwtUserDetailsService 에서 Email과 Password를 검사 (Email&Password를 member에 담는다) JwtTokenUtil 는 위에서 검사한 member를 토큰으로 변환한다 JwtUserDetailsService Email과 Password가 유효한지 검사한다. Member..
45 : Springboot(글 수정 기능) 글 수정 기능 패스워드 일치하면 다음과 같은 문구 출력 후 수정되도록 수정하기. putBoard 상단 // putBoard 상단 비밀번호 비교 부분 public ApiResponse putBoard(int id, BoardDTO boardDTO) throws Exception { // board의 비번 검사 String boardPassword = boardDAO.getBoardById(id).getPassword(); if(isBoardPasswordMisMatch(boardDTO, boardPassword)){ return new ApiResponse(false, "board password is not match"); } getBoardById에서 URL에서 받은 id를 넣고 비밀번호를 받아오는 b..
44 : Springboot(글 읽기 비즈니스 로직 추가) 글 읽기 비즈니스 로직 추가 기존 코드에서 isDel = "Y" 이면 아래 json response가 나오도록 수정 40: Springboot (Read-board) Read Board 에 글 읽기 기능을 수행하는 코드를 추가한다 요청 URL은 GET http://localhost:8080/board/{id} 으로 지정 Controller 코드이다. boardService의 getBoardById 로 URL에서 받은 변수 id를 넘겨준다 @G.. dwc04112.tistory.com BoardService public ApiResponse getBoardById(int boardId) { BoardDTO data = boardDAO.getBoardById(boardId); if(isDeletedData(..
42 : Springboot (글과 댓글 함께 출력) BoardDTO의 AllArgsConstructor -> RequiredArgsConstructor 로 수정 @AllArgsConstructor 클래스에 모든 필드에 대한 생성자를 자동으로 생성해준다. 단점 : 기존에 멤버 변수의 순서를 바꾼다면, 기존 생성자의 파라미터의 순서가 바뀐다. 만약 두 멤버 변수의 타입이 동일하다면 인지 하기 어렵다 @RequiredArgsConstructor 이 어노테이션은 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 준다 리뷰 전 코드 AllArgConstructor 때문에 모든 필드에 생성자를 자동으로 생성해서 이때까지 List 를 사용할수 없었다.. 이것 때문에 위 방법을 포기하고 LinkedHashMap으로 하나하나 Has..
Spring 여러기능 추가 ~1007 1. 댓글 목록 불러오기 GetMapping을 통하여 PathVariables에 board의 id를 입력하면 id에 해당하는 commentList들을 모두 출력한다 2. 글에 딸린 목록 불러오기 2-1 Get/board/{id} 를 고쳐서 나타내기 모양이 이상하긴 하지만.. (사진 내림) List를 하나 새로 만들어서 거기에 id에 따른 board값을 불러오는 getBoardById를 불러와서 우선 추가하고 (getBoardById 의 id, author, subject, content만 우선 들고왔다) 댓글 List를 들고와서 list에 추가했다 >>1007 드디어 성공적으로 원하는 모습으로 구현했다! 답은..LinkedHashMap 으로 다음과 같은 형태로 나타냈다. (그냥HashMap은 순서대로 출..