List 형태의 검색조건에 대해
274
작성한 질문수 9
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
여기에 질문 내용을 남겨주세요.
PositionType positionType,
List<String> majorSkillKeywords,
String minorSkill,
List<HopeWorkState> hopeWorkStates,
List<PositionWorkManShip> positionWorkManShips
대강 이러한 파라미터들로 이루어지는데 단일 파라미터가 아닌 List 형태의 파라미터는 BooleanExpression을 활용한 메서드를 어떻게 구성해줘야 하는지 감이 잘 안잡혀요. BooleanExpression을 리스트 형태로 반환하는 형태의 메서드로 구성하면 되려나요? 예를들어 majorSkills 에 대해선
private List<BooleanExpression> eqMajorSkills(List<String> majorSkillKeywords)
이런 형태의 메서드로요. 맞는 방식인지도 모르겠네요ㅜㅜㅜ
답변 1
0
안녕하세요. 마뇽님
정확히 어떤 것이 고민인지 잘 이해가 되지 않습니다.
실제 동작하는 구제적인 예제를 만들어서 올려주시겠어요?
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.
0
안녕하세요 영한님! 답변감사드리고 설명이 부족해 죄송합니다..
우선 프로젝트 공유 부부은 aws 키정보가 프로젝트에 있어 뭔가 공유하기가 조금 무서워서 … 하지 않았습니다ㅠㅠ
우선 질문은 당장은 BooleanBuilder로 구현했습니다.
기능에 대한 개요를 설명드리면
- 개발자 목록을 검색해야 합니다.
- 주요 스킬 항목은 db엔 문자열입니다. Ex. Java,spring,mysql..
- 주요 스킬 검색 키워드는 List 형태의 파라미터로 요청됩니다. Ex. List<String> : 0:java, 1:spring, 2:javascript..
- 검색기능은 위의 List항목이 포함된 개발자를 검색하게 됩니다
간략하게 이런 기능입니다. 검색조건은 주요 스킬 외에 더 있긴한데 질문에 대한건 주요 스킬(majorSkill) 만으로 설명이 가능하기에 생략했구 코드는
public Slice<Developer> findFreelancerProfileByFetch(
PositionType positionType,
List<String> majorSkillConditions,
String minorSkill,
List<HopeWorkState> hopeWorkStates,
List<PositionWorkManShip> positionWorkManShips,
String workArea
) {
BooleanBuilder builder = new BooleanBuilder();
builder.and(developer.positionType.eq(positionType));
eqMinorSkills(minorSkill, builder);
eqMajorSkillConds(majorSkillConditions, builder);
eqHopeWorkStateConds(hopeWorkStates, builder);
eqPositionWorkShipConds(positionWorkManShips, builder);
eqWorkAreaConds(workArea, builder);
QueryResults<Developer> developerQueryResults = jpaQueryFactory.selectFrom(developer)
.innerJoin(developer.freelancerProfile, freelancerProfile).fetchJoin()
.innerJoin(freelancerProfile.freelancer, freelancer).fetchJoin()
.where(builder)
.fetchResults();
return new SliceImpl<Developer>(developerQueryResults.getResults());
}
private void eqMajorSkillConds(List<String> majorSkillKeywords, BooleanBuilder builder) {
if (majorSkillKeywords == null) {
return;
}
for (String majorSkillKeyword : majorSkillKeywords) {
builder.and(developer.focusSkill.containsIgnoreCase(majorSkillKeyword));
}
}
이렇습니다. BooleanBuilder를 하나 놓고 저기에 계속 쿼리를 추가하는 방식이라고 정리할수 있을거 같아요!
이제 핵심적인 질문은 eqMajorSillConds 메서드 처럼 한 컬럼의 여러 조건을 검색해야 할때 BooleanExpression으로 어떻게 구현할수 있는지가 궁금했어요 ㅎㅎ
답변 늦어져서 죄송합니다ㅠㅠ
join에대해 질문드립니다.
0
23
1
SpringBoot 4.X에서의 Querydsl 설정
0
180
2
querydsl 오픈소스에 대한 질문
1
103
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
128
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
359
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
88
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
174
1
querydsl sum() 메서드 없어요.
0
173
2
build 디렉터리 생성
0
154
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
125
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
101
1
오타 제보 드립니다.
0
80
2
벌크 연산과 flush, clear
0
85
1
Run As Intellij 로 변경시 Q타입 import 불가
0
98
1
QHello import하기 문제 발생
0
158
2
등록된 함수 보는법(H2Dialect) 질문
0
81
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
209
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
215
1
querydsl 설정 문제
0
230
2
quey dsl 설정부분
0
169
2
count 쿼리 관련 질문입니다!
0
80
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
101
1
답변부탁드리겠습니다.
0
95
2
(OrderSpecifier)관련 내용 어디있을가요
0
68
1





