select, 조건절(where), order by에서 사용 가능
가급적이면 계산하는 로직은 DB에서가 아닌 애플리케이션에서 계산하도록 하는 것이 좋다
DB는 데이터를 적재하고 그룹핑, 조회하는 목적에서 사용하고
계산하는 로직은 애플리케이션에서 하는 것이 좋다
//심플 쿼리
@DisplayName("basicCase")
@Test
void basicCase() {
jpaQueryFactory
.select(member.age
.when(10).then("열살")
.when(20).then("스무살")
.otherwise("기타"))
.from(member)
.fetch();
}
@DisplayName("complexCase")
@Test
void complexCase() {
jpaQueryFactory
.select(new CaseBuilder()
.when(member.age.between(0, 20)).then("0~20살")
.when(member.age.between(21, 30)).then("21살~30살")
.otherwise("기타"))
.from(member)
.fetch();
}
@DisplayName("constant")
@Test
void constant() {
jpaQueryFactory
.select(member.username, Expressions.constant("A"))
.from(member)
.fetch();
}
@DisplayName("concat")
@Test
void concat() {
//{username}_{age}
List<String> result = jpaQueryFactory
.select(member.username.concat("_")
.concat(member.age.stringValue()))//type이 맞아야한다.
.from(member)
.fetch();
}