QueryDSL
5428 ワード
[定義]
静的タイプを使用してクエリー(SQLなど)のフレームワークを作成→クエリーをJavaコードとして記述するのに役立ちます
したがって、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
@Configuration
public class QueryDslConfig {
@Bean
public JPAQueryFactory jpaQueryFactory(EntityManager em){
return new JPAQueryFactory(em);
}
}
@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
Reference
この問題について(QueryDSL), 我々は、より多くの情報をここで見つけました https://velog.io/@dot2__/QueryDSLテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol