1. BoardRepsitory 1. 제목 q 로 검색 쿼리문으로 작성하지 않아도 JPA로 메서드 이름을 정의하면 자동으로 쿼리문을 완성해 준다. // 제목으로 검색 // select * from board_table where board_title like concat('%','q','%') // Containing = like 제목으로 q라는 값을 검색하면 쿼리문은 select * from board_table where board_title like concat('%','q','%') 으로 작성해 볼 수 있었다. List findByBoardTitleContaining(String q); Repository에서는 위와 같이 사용할 수 있다. @Test @DisplayName("검색 기능 테스트") ..
1. nav 페이징 목록 http://localhost:8084/board?page=1 링크를 누르면 아래 주소로 이동이 된다. 2. Controller Pageable에 java를 import하는것이 아닌 위에 체크되있는 부분을 import한다. @GetMapping public String paging(@PageableDefault(page = 1) Pageable pageable, Model model) { System.out.println("page = "+ pageable.getPageNumber()); return null; } 페이지 번호가 잘 넘어오는지 확인하려고 sout를 찍어보았다. 만약 페이지 요청이 오지않고 이상한 값이 오게된다면 PageableDefault으로 page = 1을 D..
1. Entity 클래스의 ToString @Test @Transactional @DisplayName("엔티티 클래스 ToString") public void entityToString(){ BoardEntity boardEntity = boardRepository.findById(1L).get(); System.out.println("boardEntity = " +boardEntity); } Entity 클래스에는 @ToString 어노테이션을 사용하면 에러가 나므로 테스트를 이용해서 확인해 준다. ToString이 없기 때문에 참조값이 나온다. 2. FindAll 정렬하기 @Test @Transactional @DisplayName("findAll 할 때 정렬해서 가져오기") public void ..
1. interceptor ( 인터셉터 ) 란 ? 클라이언트의 요청과 응답을 가로채고 처리하는 미들웨어 역할을 한다. interceptor는 특정 URL 패턴에 대해 요청 전처리 , 후처리 , 응답 전처리 , 응답 후처리 등의 작업을 수행할 수 있다. Interceptor를 구현하기 위해서는 HandlerInterceptor 인터페이스를 구현하고 해당 인터페이스의 메소드를 오버라이딩하여 원하는 작업을 구현하면 된다. Spring이 제공하는 기술로 , 디스패처 서블릿( Dispatcher Servlet ) 이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다. 즉 , 웹 컨테이너 ( 서블릿 컨테이너 ) 에서 동작하는 필터와 달리 인터셉터는 스프링 컨텍스트에서 동작하는 ..
1. Spring boot에서의 날짜 필드 선언 @CreationTimestamp @Column(updatable = false) private LocalDateTime createdAt; @CreationTimestamp 어노테이션은 Entity의 생성 시간을 자동으로 설정해 주는 어노테이션이다. java.util.Date 타입이나 java.time.LocalDateTime 타입에 사용하는데 본문에서는 LocalDataTime 타입을 사용하였다. Updatable = false 속성은 Column을 insert할 때만 값이 적용된다는 속성이다. 2. Builder Builder 패턴을 사용하면 객체 생성 시 필드의 순서를 신경쓰지 않고 명시적으로 필드 값을 설정할 수 있으며 선택적인 필드 값을 설정하지..
목록 수정 삭제 확인 수정 , 삭제가 같은 비밀번호 창을 요구하고 누른 것에 따라 매개변수를 받아서 다른 메소드를 호출하는 방식으로 수정, 삭제가 되도록 했다. @PutMapping("/{id}") public ResponseEntity update(@RequestBody BoardDTO boardDTO) { boardService.update(boardDTO); return new ResponseEntity(HttpStatus.OK); } 수정한 내용을 @RequestBody 를 이용해 boardDTO로 받아서 id값을 추가해서 save를 이용해서 업데이트를 했다. @DeleteMapping("/{id}") public ResponseEntity delete(@PathVariable Long id) {..
Rest.api rest API를 사용하면 만약 회원을 저장 , 조회 , 수정 , 삭제 할경우 똑같은 주소체계를 가질 수 있다. 회원저장 /member/ put 회원조회 /member/ get or post 회원수정 /member/ put or patch 회원삭제 /member/ delete Test - endPoint endpoint에서 각 메소드들의 주소를 한눈에 볼 수 있다. 이 버튼을 눌러서 테스트해볼 수 있다. id에 직접 값을 넣어서 왼쪽 화살표를 눌러서 테스트할수있다.