검색기능 만들기

이태규·2022년 3월 13일
0

spring

목록 보기
14/64

페이지네이션과 검색기능을 가지고 있는 DB를 설계한다.

public List<Book> selectListPageSearchBook(int page, String text);
@Override
    public List<Book> selectListPageSearchBook(int page, String text) {

        try {
            Query query = new Query();
            // 검색패턴( .*a.* => a가 포함된 것 해당)
            Criteria criteria = Criteria.where("title").regex(".*" + text + ".*");
            query.addCriteria(criteria);

            Pageable pageable = PageRequest.of(page - 1, 10);
            query.with(pageable);

            // 정렬 (_id기준 내림차순)
            Sort sort = Sort.by(Direction.DESC, "_id");
            query.with(sort);

            return mongoDB.find(query, Book.class);

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
Criteria criteria = Criteria.where("title").regex(".*" + text + ".*");

title에 text가 포함된 것을 찾는다.

controller

@GetMapping(value = "/selectlist")
    public String getSelectlist(
            @RequestParam(name = "page", defaultValue = "1") int page,
            @RequestParam(name = "text", defaultValue = "") String text,
            Model model) {
        if (page == 0) {
            return "redirect:/book/selectlist?page=1";
        }
        Pageable pagerequest = 
        PageRequest.of(page - 1, 10, Sort.Direction.DESC, "code");

        List<Book> list = bookRepository.getBookList(text, pagerequest);
        long pages = bookRepository.getBookCount(text);
        System.out.println(pages);
        model.addAttribute("pages", (pages - 1) / 10 + 1);
        model.addAttribute("list", list);

        return "book/selectlist";
    }

defaultValue 생각해줄 것, int는 "숫자"로 넘겨주기!

profile
한 걸음씩 나아가자

0개의 댓글