QueryDSL


[定義]


静的タイプを使用してクエリー(SQLなど)のフレームワークを作成→クエリーをJavaコードとして記述するのに役立ちます
  • Spring Data JPAクエリーの問題を解決できません
  • コードを使用してクエリーを作成し、コンパイル時に構文エラーを確認します.
    したがって、QueryDslで記述するコードは、JPQL,
  • となる.

    [QueryDSL構成の設定]

    @Configuration
    public class QueryDslConfig {
        @Bean
        public JPAQueryFactory jpaQueryFactory(EntityManager em){
            return new JPAQueryFactory(em);
        }
    }
    登録→照会レポートでJPAQuery Factory空を使用

    [Query Repositoryの作成]

    @Repository
    @RequiredArgsConstructor
    @Transactional(readOnly = true)
    public class TodoQueryRepositoryImpl implements TodoQueryRepository{
    
        private final JPAQueryFactory query;
    
        @Override
        public List<FindTodoResDto> findAllWithUserId(Long userSeq) {
            return query
                    .select(Projections.constructor(FindTodoResDto.class,
                            todo.seq,
                            todo.title,
                            todo.content))
                    .from(todo)
                    .innerJoin(todo.userTodos, userTodo)
                    .where(userTodo.user.seq.eq(userSeq)
                            .and(todo.team.isNull()))
                    .fetch();
        }
    }
    UserSeqを使用してユーザーの個人ツールを取得する

    Projections.constructor

  • DTOベースの作成者バインディング
  • 値を超える場合は、コンストラクション関数の順序と一致する必要があります: