게시글
질문&답변
2023.03.19
동적쿼리
빠르게 답변 주셔서 감사합니다. 일단 해당 강의 후속 강의로 QueryDSL을 공부해봐야겠네요! 그전에 하나 더 궁금한게 있습니다. 제가 하는 프로젝트가 UI에서 원하는 쿼리 조건을 조합하여 정보를 입력하면, API 서버에서 DB에 해당 조건대로 데이터를 가져와야 합니다. 그러다보니 A라는 테이블에 10개 컬럼이 있을 때 어떨 때는 a, b만 어떨 때는 c,d,e 또 어떨 떄는 a에 조건을 넣어서 이런 식으로 굉장히 동적으로 데이터를 가져와야 합니다. 근데 제가 막혔던 부분 중 하나는 선생님께서 response 객체를 만들어서 넘기는데 이렇게 하면 저렇게 다양한 조합대로 response 객체를 만들 수가 없거든요. return jdbcTemplate.query(sql, (rs, rowNum) -> { long id = rs.getLong("id"); String name = rs.getString("name"); int age = rs.getInt("age"); return new UserResponse(id, name, age); });예를 들어 코드보면 id랑 name이랑 age를 return하는데 어떨 때는 id만 어떨 때는 id, name만 또 어떨 때는 id랑 age만 어떨 때는 id, name, age만 이런 식으로 가져와야하는데 저렇게 만들면 안되서요. response 객체를 안만들고 hashmap으로 만들까 했는데 이것도 먼가 잘 안되네요...return userRepository.findAll().stream() .map(UserResponse::new) .collect(Collectors.toList());이건 JPA 예제도 마찬가지고요. public Interface UserInfoMapping { String getName(); int getAge(); } public interface UserRepository extends JpaRepository { List findAllById(Long id); // 이름, 나이만! }제가 인터넷에서 본 에제인데 결과적으로 워낙 다양한 조합이 나올 수 있어서 먼가 저 위의 것이 맞지 않아보이고요. 분명 가능한 방법이 있을 거 같은데 이제 막 시작한 저로서는 좀 쉽지가 않네요.....querydsl로 하면 제가 원하는 부분이 해결 되는 걸까요?
- 1
- 2
- 673
질문&답변
2020.08.23
질문드려요^^
좋은 강의와 좋은 답변 주셔서 감사합니다:)
- 0
- 2
- 553