Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f31ca4c
commit facf34c
Showing
8 changed files
with
270 additions
and
67 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
querydsl/src/main/java/kangwoojin/github/io/querydsl/event/model/CampaignDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package kangwoojin.github.io.querydsl.event.model; | ||
|
||
import lombok.Getter; | ||
import lombok.Setter; | ||
import lombok.experimental.Accessors; | ||
|
||
@Getter | ||
@Setter | ||
@Accessors(chain = true) | ||
public class CampaignDto { | ||
private Long campaignId; | ||
private String campaignName; | ||
private Long amountSum; | ||
private Long eventAmountSum; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
...rc/main/java/kangwoojin/github/io/querydsl/event/repository/CampaignCustomRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,19 @@ | ||
package kangwoojin.github.io.querydsl.event.repository; | ||
|
||
import java.util.List; | ||
|
||
import com.querydsl.core.Tuple; | ||
|
||
import kangwoojin.github.io.querydsl.event.model.Campaign; | ||
import kangwoojin.github.io.querydsl.event.model.CampaignDto; | ||
|
||
public interface CampaignCustomRepository { | ||
|
||
Campaign findByName(String name); | ||
|
||
List<CampaignDto> getAmountSum(Long eventId); | ||
|
||
Tuple selectUseQModelFields(Long id); | ||
|
||
Tuple selectUseQModelOnly(Long id); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
querydsl/src/test/java/kangwoojin/github/io/querydsl/CampaignGroupByTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package kangwoojin.github.io.querydsl; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
import java.util.List; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; | ||
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; | ||
import org.springframework.test.context.TestConstructor; | ||
import org.springframework.test.context.TestConstructor.AutowireMode; | ||
|
||
import kangwoojin.github.io.querydsl.event.model.Campaign; | ||
import kangwoojin.github.io.querydsl.event.model.CampaignDto; | ||
import kangwoojin.github.io.querydsl.event.model.Event; | ||
import kangwoojin.github.io.querydsl.event.repository.CampaignRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@DataJpaTest | ||
@TestConstructor(autowireMode = AutowireMode.ALL) | ||
@RequiredArgsConstructor | ||
class CampaignGroupByTest { | ||
private final CampaignRepository campaignRepository; | ||
private final TestEntityManager testEntityManager; | ||
|
||
@Test | ||
void groupByLeftJoinIsEmptyThenAggregationValueIsNullTest() { | ||
Campaign campaign = new Campaign(); | ||
long campaignAmount = 5L; | ||
String campaignName = "test"; | ||
campaign.setAmount(campaignAmount); | ||
campaign.setName(campaignName); | ||
testEntityManager.persist(campaign); | ||
testEntityManager.flush(); | ||
testEntityManager.clear(); | ||
|
||
List<CampaignDto> actual = campaignRepository.getAmountSum(0L); | ||
|
||
assertThat(actual).isNotEmpty(); | ||
assertThat(actual).hasSize(1); | ||
assertThat(actual.get(0).getCampaignName()).isEqualTo(campaignName); | ||
assertThat(actual.get(0).getAmountSum()).isEqualTo(campaignAmount); | ||
assertThat(actual.get(0).getEventAmountSum()).isNull(); | ||
} | ||
|
||
private Event getEvent(String evnet, long amount, Campaign campaign) { | ||
Event event = new Event(); | ||
event.setName(evnet); | ||
event.setAmount(amount); | ||
event.setCampaign(campaign); | ||
return event; | ||
} | ||
} |
67 changes: 67 additions & 0 deletions
67
querydsl/src/test/java/kangwoojin/github/io/querydsl/QuerydslSelectTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package kangwoojin.github.io.querydsl; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; | ||
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; | ||
import org.springframework.test.context.TestConstructor; | ||
import org.springframework.test.context.TestConstructor.AutowireMode; | ||
|
||
import com.querydsl.core.Tuple; | ||
|
||
import kangwoojin.github.io.querydsl.event.model.Campaign; | ||
import kangwoojin.github.io.querydsl.event.model.QCampaign; | ||
import kangwoojin.github.io.querydsl.event.repository.CampaignRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@DataJpaTest | ||
@TestConstructor(autowireMode = AutowireMode.ALL) | ||
@RequiredArgsConstructor | ||
class QuerydslSelectTest { | ||
private static final QCampaign qCampaign = QCampaign.campaign; | ||
private final CampaignRepository campaignRepository; | ||
private final TestEntityManager testEntityManager; | ||
|
||
@Test | ||
void selectUseQModelFields() { | ||
long campaignAmount = 5L; | ||
Campaign campaign = new Campaign(); | ||
campaign.setAmount(campaignAmount); | ||
String campaignName = "test"; | ||
campaign.setName(campaignName); | ||
|
||
Campaign saved = testEntityManager.persist(campaign); | ||
testEntityManager.flush(); | ||
testEntityManager.clear(); | ||
|
||
Tuple tuple = campaignRepository.selectUseQModelFields(saved.getId()); | ||
|
||
assertThat(tuple.get(qCampaign.id)).isEqualTo(saved.getId()); | ||
assertThat(tuple.get(qCampaign.name)).isEqualTo(saved.getName()); | ||
assertThat(tuple.get(qCampaign.amount)).isEqualTo(saved.getAmount()); | ||
} | ||
|
||
@Test | ||
void selectUseQModelOnly() { | ||
long campaignAmount = 5L; | ||
Campaign campaign = new Campaign(); | ||
campaign.setAmount(campaignAmount); | ||
String campaignName = "test"; | ||
campaign.setName(campaignName); | ||
|
||
Campaign saved = testEntityManager.persist(campaign); | ||
testEntityManager.flush(); | ||
testEntityManager.clear(); | ||
|
||
Tuple tuple = campaignRepository.selectUseQModelOnly(saved.getId()); | ||
|
||
assertThat(tuple.get(qCampaign.id)).isNull(); | ||
assertThat(tuple.get(qCampaign.name)).isNull(); | ||
assertThat(tuple.get(qCampaign.amount)).isNull(); | ||
assertThat(tuple.get(qCampaign).getId()).isEqualTo(saved.getId()); | ||
assertThat(tuple.get(qCampaign).getName()).isEqualTo(saved.getName()); | ||
assertThat(tuple.get(qCampaign).getAmount()).isEqualTo(saved.getAmount()); | ||
assertThat(tuple.get(qCampaign.amount.add(1L))).isEqualTo(saved.getAmount() + 1); | ||
} | ||
} |