본문 바로가기

JPA/Querydsl17

Querydsl 09 - 수정, 삭제 배치 쿼리 바로 코드로 보자. //수정 @Test void bulkUpdate() { //count는 영향을 받은 회원 수 long count = queryFactory.update(member) .set(member.username, "비회원") .where(member.age.lt(28)).execute(); //영속성 컨텍스트 비우기 em.flush(); em.clear(); } //더하기 @Test void bulkAdd() { queryFactory.update(member) .set(member.age, member.age.add(1)) .execute(); //영속성 컨텍스트 비우기 em.flush(); em.clear(); } //삭제 @Test void bulkDelete() { queryFacto.. 2022. 1. 20.
Querydsl 08 - 동적 쿼리 동적 쿼리를 해결하는 데에는 2가지 방식이 있다. 1. BooleanBuilder 2. Where 다중 파라미터 사용 1. BooleanBuilder 코드로 보자 @Test void dynamicQuery_BooleanBuilder() { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember1(usernameParam, ageParam); assertThat(result.size()).isEqualTo(1); } private List searchMember1(String usernameCond, Integer ageCond) { BooleanBuilder builder = new BooleanBuilder(.. 2022. 1. 20.
Querydsl 07 - 프로젝션과 결과반환 프로젝션과 결과 반환 - 기본 프로젝션: select 대상 지정 먼저 MemberDto는 아래와 같다. @NoArgsConstructor @Data public class MemberDto { private String username; private int age; public MemberDto(String username, int age) { this.username = username; this.age = age; } } 프로젝션 대상이 하나인 경우 @Test void simpleProjection(){ List result = queryFactory.select(member.username).from(member).fetch(); for (String username : result) System.. 2022. 1. 19.
Querydsl 06 - Case문, 상수 문자 더하기 Case문 select, 조건절(where)에서 사용 가능 /*단순한 조건*/ // 10살, 20살, 나머지로 나누기 @Test void basicCase() { List result = queryFactory.select( member.age .when(10).then("열살") .when(20).then("스무슬") .otherwise("기타")) .from(member) .fetch(); for (String s : result) System.out.println("s = " + s); } 출력결과: s = 기타 s = 열살 s = 스무슬 s = 열살 s = 스무슬 /*복잡한 조건*/ /*복잡한 조건에는 CaseBuilder를 사용한다.*/ // 0~20살, 21~30살, 나머지로 나누기 @Test.. 2022. 1. 18.