public interface MemberRepository extends JpaRepository { Page findByAge(int age, Pageable pageable); } ✔ Pageable, import 잘해야함 ✔ JPA의 페이지 기능을 써주기 위해서는 Page제네릭안에 페이징하고 싶은 엔티티를 넣어줘야함 ✔ int age는 where과 같은 역할임 ✔ pageable은 첫 번째 페이지, 페이지당 보여줄 데이터는 3건(단 이름으로 내림차순으로 정렬해라)와 같은 옵션을 줄 수 있음 import org.springframework.data.domain.Pageable; 다른 것으로 import하면 오류남 @SpringBootTest @Transactional @Rollback(value =..
개념을 다시 보다가 Arrays.equals를 보고 조금 혼동이와서 관련 내용을 찾아보았다. 결론부터 얘기하자면 ==비교를 주소비교라고 생각하면 안된다. 그건 String에서만 해당하는 이야기다. equals는 결국 ==비교이다. 타입에 따라 ==비교가 주소에서 끝나느냐 기본타입까지 내려가느냐가 결정 되는 것이다. Arrays.equals는 a[i]의 equals비교, Arrays.deepEquals는 a[i]의 기본타입까지 파고들어가서 기본타입의 equal비교이다. -> 즉 값비교이다. 하지만 해당내용을 알기위해서는 아래의 글을 보는 것을 추천한다. ==과 equals는 우리가 잘 아는 개념이다. String에서는 ✔ ==은 주소 비교 ✔ equals는 값비교 이다. 따라서 우리는 equals를 값비교..
Select * from 테이블명 orders LIMIT A B; B : B번째 row부터 출력 A : A개의 행 출력 select member0_.member_id as member_i1_0_, member0_.age as age2_0_, member0_.team_id as team_id4_0_, member0_.username as username3_0_ from member member0_ where member0_.age=10 order by member0_.username desc limit 3 offset 1; 1번째 row부터 3개의 행을 출력하라는 것 (row의 첫번째 index는 0이다.)
@Test public void paging() { //given for(int i = 1; i
List findListByUsername(String username); //컬랙션 Member findMemberByUsername(String username); //단건 Optional findOptionalByUsername(String username);//단건 Optional Spring Data Jpa의 쿼리를 만드는 원리는 By이후와 반환타입으로 결정된다고 생각해야할것 같다. Member findMemberByUsername(String username); //단건 ↓ List findMemberByUsername(String username); //컬렉션 실제로 테스트를 해보았다. List findMemberByUsername(String username); //컬렉션 @Test pu..
@Test public void returnType() { Member m1 = new Member("AAA", 10); Member m2 = new Member("AAA", 20); memberRepository.save(m1); memberRepository.save(m2); assertThatThrownBy(() -> memberRepository.findOptionalByUsername("AAA")).isInstanceOf(NonUniqueResultException.class); } asserThatThrouwBy를 사용하여 예외를 확인 할 수 있음
@Test public void returnType() { Member m1 = new Member("AAA", 10); Member m2 = new Member("AAA", 20); memberRepository.save(m1); memberRepository.save(m2); Optional findMember = memberRepository.findOptionalByUsername("AAA"); System.out.println("findMember = " + findMember); } ✔ JPA에서는 NonUniqueResultException이 나오지만 Spring은 JPA만 repository기술로 사용하는 것이 아니기때문에 IncorrectResultSizeDataAccessExceptio..
java8 이후: Optional을 사용할 수 있다. Null처리에 대해 if문을 굳이 쓸 필요가 없어진다. Stream API: 반복문의 사용없이 컬랙션의 처리를 할 수 있게 도와준다. 람다표현식, 동작 파라미터 LocalDateTime