From 5314613c8c86b0cb1e6a1b2185820ad5cb25ae6c Mon Sep 17 00:00:00 2001 From: haerong22 Date: Tue, 31 Aug 2021 23:43:39 +0900 Subject: [PATCH] spring data jpa : @Query, return value, dto --- .../example/springdatajpa/dto/MemberDto.java | 13 ++++++ .../repository/MemberRepository.java | 10 ++++ .../repository/MemberRepositoryTest.java | 46 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 spring-data-jpa/src/main/java/com/example/springdatajpa/dto/MemberDto.java diff --git a/spring-data-jpa/src/main/java/com/example/springdatajpa/dto/MemberDto.java b/spring-data-jpa/src/main/java/com/example/springdatajpa/dto/MemberDto.java new file mode 100644 index 00000000..88a9ed47 --- /dev/null +++ b/spring-data-jpa/src/main/java/com/example/springdatajpa/dto/MemberDto.java @@ -0,0 +1,13 @@ +package com.example.springdatajpa.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class MemberDto { + + private Long id; + private String username; + private String teamName; +} diff --git a/spring-data-jpa/src/main/java/com/example/springdatajpa/repository/MemberRepository.java b/spring-data-jpa/src/main/java/com/example/springdatajpa/repository/MemberRepository.java index 8c0febc2..a2a95393 100644 --- a/spring-data-jpa/src/main/java/com/example/springdatajpa/repository/MemberRepository.java +++ b/spring-data-jpa/src/main/java/com/example/springdatajpa/repository/MemberRepository.java @@ -1,5 +1,6 @@ package com.example.springdatajpa.repository; +import com.example.springdatajpa.dto.MemberDto; import com.example.springdatajpa.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -13,4 +14,13 @@ public interface MemberRepository extends JpaRepository { @Query(name = "Member.findByUsername") // named query 가 있는지 먼저 찾고(domain.methodName) -> query creation List findByUsername(@Param("username") String username); + + @Query("select m from Member m where m.username = :username and m.age = :age") + List findMember(@Param("username") String username, @Param("age") int age); + + @Query("select m.username from Member m") + List findUsernameList(); + + @Query("select new com.example.springdatajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join m.team t") + List findMemberDto(); } diff --git a/spring-data-jpa/src/test/java/com/example/springdatajpa/repository/MemberRepositoryTest.java b/spring-data-jpa/src/test/java/com/example/springdatajpa/repository/MemberRepositoryTest.java index c8e68c85..1edfb759 100644 --- a/spring-data-jpa/src/test/java/com/example/springdatajpa/repository/MemberRepositoryTest.java +++ b/spring-data-jpa/src/test/java/com/example/springdatajpa/repository/MemberRepositoryTest.java @@ -1,6 +1,8 @@ package com.example.springdatajpa.repository; +import com.example.springdatajpa.dto.MemberDto; import com.example.springdatajpa.entity.Member; +import com.example.springdatajpa.entity.Team; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -17,6 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; + @Autowired TeamRepository teamRepository; @Test void testMember() { @@ -84,4 +87,47 @@ public class MemberRepositoryTest { assertEquals(m1, result.get(0)); } + + @Test + public void testQuery() { + Member m1 = new Member("aaa", 10); + Member m2 = new Member("bbb", 20); + memberRepository.save(m1); + memberRepository.save(m2); + + List result = memberRepository.findMember("aaa", 10); + + assertEquals(m1, result.get(0)); + } + + @Test + public void findUsernameList() { + Member m1 = new Member("aaa", 10); + Member m2 = new Member("bbb", 20); + memberRepository.save(m1); + memberRepository.save(m2); + + List result = memberRepository.findUsernameList(); + + for (String s : result) { + System.out.println("s = " + s); + } + + assertEquals(2, result.size()); + } + + @Test + public void findMemberDto() { + Team team = new Team("teamA"); + teamRepository.save(team); + + Member m1 = new Member("aaa", 10); + m1.setTeam(team); + memberRepository.save(m1); + + List result = memberRepository.findMemberDto(); + + assertEquals("aaa", result.get(0).getUsername()); + assertEquals("teamA", result.get(0).getTeamName()); + } }