spring data jpa : @Query, return value, dto
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user