본문 바로가기
Spring Framework

JPA 페이징 , 내림차순 정렬 코드

by 자유코딩 2018. 11. 21.

mybatis를 사용하면 사람이 직접 PageMaker 클래스를 작성해야 한다.


JPA에서는 자동으로 페이징 처리가 된다.


페이징 배운다고 시간 낭비 하지 말자.


HomeController.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RequestMapping(value = "/artwork")
    public String artwork(HttpServletRequest request, HttpServletResponse response, Sort sort) {
        Map<String, Object> map = new HashMap<>();
        map.put("request", request);
        map.put("repository", postsRepository);
        map.put("sort", sort);
        
        ArtworkTablePrintService artworkTablePrintService = new ArtworkTablePrintService();
        Map<String, Object> resultMap = artworkTablePrintService.tablePrint(map);
        
        List<Posts> postList = (List<Posts>) map.get("list");
        String page = (String) map.get("page");
        
        HttpSession session = request.getSession();
        session.setAttribute("list", postList);
        
        return page;
    }
 
cs


Service


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public Map<String, Object> tablePrint(Map<String, Object> map) {
        HttpServletRequest request = (HttpServletRequest) map.get("request");
        PostsRepository postsRepository = (PostsRepository)map.get("repository");
        Sort sort = (Sort) map.get("sort");
        
        int pagenum = Integer.parseInt(request.getParameter("pagenum"));//페이지 번호
        int contentnum = Integer.parseInt(request.getParameter("contentnum"));//한 페이지에 몇개 보일지
        
        sort = sort.and(new Sort(Sort.Direction.DESC, "id"));
        PageRequest pageRequest = new PageRequest(pagenum-1, contentnum, sort);
        
        Page<Posts> pagePosts = postsRepository.findAll(pageRequest);
        List<Posts> postList = pagePosts.getContent();
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("list", postList);
        resultMap.put("page""artwork");
 
        return resultMap;
        
    }
cs


핵심은 이곳이다.


1. Sort를 매개변수로 받는다.


2. sort = sort.and(new Sort(Sort.Direction.DESC, "id"));


sort 를 내림차순 , id 로 변경했다.


id 는 db 컬럼 명이다.


PageRequest pageRequest = new PageRequest(pagenum-1, contentnum, sort);


pageRequest 객체에 sort 를 포함시킨다.


Page<Posts> pagePosts = postsRepository.findAll(pageRequest);


pageRequest 객체를 사용해서 쿼리를 보낸다.


List<Posts> postList = pagePosts.getContent();


마지막으로 항목을 가져온다.

댓글