티스토리 뷰
이번에는 목록 조회랑 상세 조회 두 개를 한 번에 만들었다. Category 때 이미 조회 패턴은 해봤으니 수월했다
목록/상세, SQL에서부터 다르게 짰다
목록 조회는 password를 아예 SELECT하지 않았다.
// BoardMapper.xml
<select id="selectBoardList" resultType="com.study.board.BoardEntity">
SELECT id, category_id, title, writer, content, view_count, created_at, updated_at
FROM Board
ORDER BY id DESC
</select>
근데 상세 조회는 예외적으로 password를 포함시켰다.
// BoardMapper.xml
<select id="selectBoardDetail" resultType="com.study.board.BoardEntity">
SELECT id, category_id, title, writer, content, password, view_count, created_at, updated_at
FROM Board
WHERE id = #{id}
</select>
나중에 수정/삭제 API에서 비밀번호를 검증하려면 그 값을 서버가 알고 있어야 하기 때문. 응답으로 나갈 땐 Converter가 걸러주니 클라이언트한테 노출될 일은 없다.
조회수는 UPDATE로 처리
상세 조회할 때마다 view_count를 1씩 올려야 하는데, 이건 SELECT가 아니라 UPDATE로 처리했다.
// BoardMapper.xml
<update id="increaseViewCount">
UPDATE Board
SET view_count = view_count + 1
WHERE id = #{id}
</update>
서비스에서는 조회수를 먼저 올리고, 그 다음에 조회하는 순서로 짰다.
public BoardResponse getBoardDetail(Long id) {
boardMapper.increaseViewCount(id);
BoardEntity board = boardMapper.selectBoardDetail(id);
return boardConverter.toResponse(board);
}
여기까지는 예상대로 순조롭게 끝났다. 근데 실제로 API를 돌려보니 문제가 하나 있었다.
트러블슈팅 (컬럼들이 전부 null)

목록 조회 API를 포스트맨으로 돌려보니 이런 응답이 나왔다.
id, title, writer, content는 멀쩡한데 categoryId, viewCount, createdAt, updatedAt만 전부 null.
규칙이 보였는데 밑줄(_) 없는 컬럼만 정상, 밑줄 있는 컬럼만 null이 출력되는것을 확인했다
이유: DB 컬럼은 category_id, view_count처럼 스네이크케이스인데, 자바 필드는 categoryId, viewCount처럼 카멜케이스다. MyBatis는 기본적으로 이 둘을 자동으로 연결해주지 않는다. category_id라는 컬럼명 그대로 categoryId라는 필드를 찾으려다 실패하면, 그냥 조용히 null을 넣어버린다. 등록 API에서는 이 문제가 안 보였는데, 그건 그때 응답이 DB에서 다시 읽어온 게 아니라 우리가 직접 만든 자바 객체를 그대로 썼기 때문이었다.
해결방법 :
// application.yaml
mybatis:
configuration:
map-underscore-to-camel-case: true
이 설정을 켜주면 MyBatis가 category_id → categoryId로 자동 변환해준다.
결과

![]() |
![]() |
설정 추가하고 다시 조회해보니, 목록/상세 전부 정상적으로 값이 채워졌고, 같은 게시글을 상세 조회로 여러 번 호출하니 viewCount가 1씩 올라가는 것도 확인했다.
'게시판 만들기 > 2주차' 카테고리의 다른 글
| 만들자 게시판 2주차 (6) - Board 삭제 API 구현 (0) | 2026.07.11 |
|---|---|
| 만들자 게시판 2주차 (5) - Board 수정 API 구현 (0) | 2026.07.11 |
| 만들자 게시판 2주차 (3) - Board 등록 API 구현 (0) | 2026.07.10 |
| 만들자 게시판 2주차 (2) - 카테고리 조회 API 구현 (0) | 2026.07.09 |
| 만들자 게시판 2주차 (1) - 1주차 마무리, 그리고 2주차 스프링부트로 (0) | 2026.07.09 |


