spring data jpa : @Query, return value, dto

This commit is contained in:
haerong22
2021-08-31 23:43:39 +09:00
parent abb9a2bb2b
commit 5314613c8c
3 changed files with 69 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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<Member, Long> {
@Query(name = "Member.findByUsername") // named query 가 있는지 먼저 찾고(domain.methodName) -> query creation
List<Member> findByUsername(@Param("username") String username);
@Query("select m from Member m where m.username = :username and m.age = :age")
List<Member> findMember(@Param("username") String username, @Param("age") int age);
@Query("select m.username from Member m")
List<String> findUsernameList();
@Query("select new com.example.springdatajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join m.team t")
List<MemberDto> findMemberDto();
}

View File

@@ -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<Member> 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<String> 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<MemberDto> result = memberRepository.findMemberDto();
assertEquals("aaa", result.get(0).getUsername());
assertEquals("teamA", result.get(0).getTeamName());
}
}