게시판1 리스트 만들기

yj k·2023년 3월 20일
0

SpringBoot

목록 보기
4/4

controller 작성

DB상에서 내가 보여줘야 할 글이 보이기 위해서
Controller에서 조회해서 값을 담아서 보여주는 작업을 수행해아 함

  1. 페이징 처리
  2. 검색바 기준별 목록 조회

1. 페이징 처리(하단 페이지 번호)

2. 검색바 기준별 목록 조회

BoardController 클래스에서 작업

boardList(); 메소드에서
페이징처리, 검색바 기준별 목록조회 모두 수행

받아와야할 자료--------
1.요청하고 있는 페이지가 어디있는가
2.요청하고 있는 검색어가 무엇인지 확인 해야함

1.page라는 파라미터 이용
2.name = searchCondition 검색 분류
2.name = searchValue 검색 키워드

@RequestParam으로 값을 받아온다.

@RequestParam(defaultValue="1") int page,
@RequestParam(required=false) String searchCondition,
@RequestParam(required=false) String searchValue

defaultValue="1" 파라미터가 안 넘어왔을 때 1페이지로 온다.
required=false 검색 조건 값(파라미터)이 없어도 오류가 발생하지 않는다.

*log.info 넘어가는 파라미터들 동작에 대한 추적을 위해 코드를 찍었다
(상단에 어노테이션 @Slf4j 붙여야함)

원하는 검색 조건에 맞는 원하는 페이지를 조회하기 위한 코드
추가 작성

BoardService작성

@Service
@Transactional 어노테이션 붙인다.

BoardController 클래스에
BoardService 의존성 주입

BoardController에 작성한 selectBoardList 메소드를 boardService에 생성

*전체 게시글 수 확인(검색어가 있는 경우 포함) => 페이징 처리 계산을 위해서


검색 기준 값이 있다면 받아오기 위해서 searchMap을 넣어준다.

boardService 의존성 주입

boardMapper 인터페이스 작성

@Mapper 어노테이션 붙이기

boardMapper.xml로 간다.
boardMapper.xml의 selectTotalCount 구조 확인

parameterType=hashmap
hashmap : mybatis에서 정한 타입 중 하나
map안에 들어있는 key값으로 꺼내와야한다.
(여기서는 searchCondition, searchValue)

boardService로 돌아와서

로그를 찍어본다.
콘솔 창에 page, searchMap, totalCount가 잘 찍혀 나오는 것을 확인.

*한 페이지에 보여질 페이징 버튼의 수


selectCriteria :
조회 시 필요한 조건들을 한 번에 담기 위해 만듦

pagenation 확인
검색어가 존재하는 경우 검색 조건으로 select 후 페이징 처리를하기 위한 용도
계산 수행 후 selectCriteria로 값을 넘겨줌

boardService로 돌아와서
페이징 처리와 연관된 값을 계산하여 selectCriteria 타입의 객체에 담는다.

계산한 startrow와 endrow 조회 로직 작성

boardMapper에 생성해준다.

boardMapper.xml로 간다.
boardMapper.xml의 selectBoardList구조 확인(6번 19분 다시 확인)

boardService로 돌아와서

로그 찍어서 확인

selectCriteria, boardList 두 가지 값을 같이 사용해야하기 때문에 Map 형식으로 자료를 저장한다.

boardService의 전체 흐름

전체 게시글 수 검색어가 있는 경우 없는 경우를 계산
페이징 처리와 연관된 값 계산
요청 페이지와 검색 기준에 맞는 게시글을 조회해서
하나의 Map 형태로 합쳐서 반환해주고있다.

boardController로 돌아와서
boardService에서 paging, boardList값을 잘 받아왔다.
그 값을
model객체에 값을 담아준다.

페이지에서 조회해보고 log에 내용이 잘 찍히는 것을 확인
(조회되는 페이지바 숫자 검색 값 등)

게시판에 자료를 나타나도록 테이블에 값을 넣어준다.
boardList.html 작성
tr을 반복해서 나타낼 수 있도록 thymeleaf 반복문으로 작성

board = ${boardList} : boardList(model에 담았던 boardList 값 이 안에 boardDTO가 들어있다)를 board라는 변수에 담아 사용

페이징바 소스 보기
검색 조건이 없는 경우 & 있는 경우(6번 50분 7번 1분 다시보기)

검색 폼 소스보기(7번 5분 다시보기)

0개의 댓글

관련 채용 정보