일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spring
- 그리디
- 스프링
- jpa
- 자바
- Proxy
- 스프링 핵심 원리
- Exception
- transaction
- pointcut
- JPQL
- Servlet
- Android
- 스프링 핵심 기능
- QueryDSL
- AOP
- kotlin
- SpringBoot
- 백준
- Thymeleaf
- JDBC
- http
- 김영한
- java
- db
- Spring Boot
- 알고리즘
- Greedy
- 인프런
- springdatajpa
- Today
- Total
목록java (156)
개발자되기 프로젝트
1. @Api 기존에 작성한 controller에 @Api(tags = {""}를 추가하자. ""안에 간단한 tag를 입력할 수 있는데. swagger ui에 보여지는 이름?이라고 보면 된다. @Api(tags = {"API 정보를 제공하는 Controller"}) @RestController @RequestMapping("/api") public class Controller { @GetMapping("/hello") public String hello(){ return "hello"; } } swagger-ui를 새로고침하면 이름이 바뀐걸 볼 수 있다. 2. @ApiParam controller내에 pathVariable, query parameter을 변수로 받아 두 값을 더하는 method를 작성..
Swagger : 개발한 REST API를 편리하게 문서화 하여 관리 및 제3 사용자가 편하게 API를 호출해보고 테스트 할 수 있는 프로젝트 SpringBoot는 springfox-boot-starter를 아래와 같이 gradle dependencies에 추가하주면 사용이 가능. implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' 근데! 노출되면 안되는 곳에서 사용할 땐 주의해야 한당. @APi 클래스를 swagger의 resource로 표시 @ApiOperation 특정 경로의 operation HTTP method 설명 @ApiParam opration parameter에 meta data 설명 ..
이전에 page에 관련해서 간략히 정리했던 부분이 있다. https://bsh-developer.tistory.com/13 아래처럼 name이 일치하는 entity를 page로 return을 해보자. 참고로 Pageagble은 paging을 요청하는 것을 의미한다. Page findByName(String name, Pageable pageable); Page findByName(String name, Pageable pageable); System.out.println("find by name with paging : " + userRepository.findByName("hyun", PageRequest.of(0,2, Sort.by(Sort.Order.desc("id")))).getContent())..
1.이름으로 top 1 찾기 List findTop1ByName(String name); System.out.println("find top 1 by name : " + userRepository.findTop1ByName("hyun")); where 조건에서 limit가 걸린걸 볼 수 있다. where user0_.name=? limit ? find top 1 by name : [ User(name=hyun, email=hyun@naver.com, createdAt=2021-05-27T20:20:01.032253, updatedAt=2021-05-27T20:20:01.032253, id=1) ] 2. last one 찾기 그러면 혹시 음 findLast1_같은 형식도 가능할까..??? 불가능하다. 대신..
이번엔 bean값과 관련된 keyword를 살펴보자. 1. IS_NOT_NULL List findByIdIsNotNull(); System.out.println("find by id is not null : " + userRepository.findByIdIsNotNull()); id가 primary key 여서... null인 경우가 없다.. 2. in / notIn 자주 사용된다~~~리스트 안에 있는 이름들을 가진 entity를 찾아보자. List findByNameIn(List names); System.out.println("find by name in : " + userRepository.findByNameIn(Lists.newArrayList("hyun", "kim"))); 테스트 결과 해당 ..
앞서 Query Method에서 사용한 예시 외에도 부가적으로 제공하는 키워드가 있다. and, or등 여러 logical keywork가 존재한다. 써보자! 1.And / Or 먼저 And!!!!! email과 name을 둘다 사용해서 찾아보자! --> findByEmailAndName(String email, String name)을 만들들고 테스트! List findByEmailAndName(String email, String name); System.out.println("find by email and name : " + userRepository.findByEmailAndName("hyun@google.com", "hyun")); 테스트 결과를 보면 where 조건에서 email과 name이..
findByName()이라는 method를 만들어 보자. 진짜 간단하다.. UserRepositlry interface에 아래와 같이 추가했당. public interface UserRepository extends JpaRepository { List findByName(String name); } 그리고 아래처럼 test코드를 작성해보자. @Test void select(){ System.out.println(userRepository.findByName("hyun")); } 그러면 이름이 일치하는 entity가 List타입으로 불어와졌다...신기함.. JPA를 사용했을때 체감으로는 쉽게 작성하고 많은 혜택을 받는게 쿼리메서드 생성한 repository에 naming base로 method를 선언하기..
실제 구현체 코드를 뜯어보자! 1. update query user1명 저장 --> id가 1인 entity를 가져와서 email수정후 다시 저장해보자. @Test void crud(){//create, read, update, delete userRepository.save(new User("david", "david@fast.com"));//insser query동작 User user = userRepository.findById(1L).orElseThrow(RuntimeException::new); user.setEmail("sdfsdf-updated@naver.com"); userRepository.save(user); } save:insert query-> findbyId: select quer..