BoardSearchImpl > SPRING_DATA_JPA

본문 바로가기

사이트 내 전체검색

뒤로가기 SPRING_DATA_JPA

BoardSearchImpl

페이지 정보

작성자 관리자 작성일 24-06-17 11:15 조회 1,301 댓글 0

본문

package web.repository;


import java.util.List;


import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageImpl;

import org.springframework.data.domain.Pageable;

import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;


import com.querydsl.core.BooleanBuilder;

import com.querydsl.jpa.JPQLQuery;


import web.domain.Board;

import web.domain.QBoard;


public class BoardSearchImpl extends QuerydslRepositorySupport implements BoardSearch{


public BoardSearchImpl() {

super(Board.class);

}


@Override

public Page<Board> searchAll(String[] types, String keyword, Pageable pageable) {

QBoard board = QBoard.board; //Q도메인 객체 선언 및 초기화

JPQLQuery<Board> query = from(board); //select ... from board (쿼리 부분)


//검색 타입과 검색어가 있다면

if( (types != null && types.length > 0) && keyword != null ) {

BooleanBuilder booleanBuilder = new BooleanBuilder();


for(String type : types) {

switch (type){

case "t":

booleanBuilder.or(board.title.contains(keyword));

break;

case "c":

booleanBuilder.or(board.content.contains(keyword));

break;

case "w":

booleanBuilder.or(board.writer.contains(keyword));

break;

} //switch

} //for


query.where(booleanBuilder);

} //if


query.where(board.bno.gt(0L));


//paging

this.getQuerydsl().applyPagination(pageable, query);


List<Board> list = query.fetch();

long count = query.fetchCount();


return new PageImpl<>(list, pageable, count);

}


@Override

public Page<Board> search1(Pageable pageable) {

QBoard board = QBoard.board; //Q도메인 객체 선언 및 초기화


JPQLQuery<Board> query = from(board); //select ... from board (쿼리 부분)

query.where(board.title.contains("1")); //where title like '%1%' (쿼리 부분)


//paging

this.getQuerydsl().applyPagination(pageable, query);


List<Board> list = query.fetch();

long count = query.fetchCount();


return null;

}


}


댓글목록 0

등록된 댓글이 없습니다.


Copyright © dancePKT. All rights reserved.
PC 버전으로 보기