Untitled

1. BoardNativeRepository findById 추가

public Board findById(int id) {
    Query query = em.createNativeQuery("select * from board_tb where id = ?", Board.class);
    query.setParameter(1, id);
    return (Board) query.getSingleResult();
}

2. 쿼리 테스트 (단위 테스트)

@Test
public void findById_test(){
    // given
    int id = 1;

    // when
    Board board = boardNativeRepository.findById(id);
    //System.out.println("findById_test "+board);

    // then
    assertThat(board.getTitle()).isEqualTo("제목1");
    assertThat(board.getContent()).isEqualTo("내용1");
}

3. 컨트롤러에서 가방에 담기

@GetMapping("/board/{id}")
public String detail(@PathVariable Integer id, HttpServletRequest request) {
    Board board = boardNativeRepository.findById(id);
    request.setAttribute("board", board);
    return "board/detail";
}

4. 화면에 렌더링하기 (가방에서 꺼내서)

{{> /layout/header}}

<div class="container p-5">

    <!-- 수정삭제버튼 -->
    <div class="d-flex justify-content-end">
        <a href="/board/{{board.id}}/update-form" class="btn btn-warning me-1">수정</a>
        <form action="/board/{{board.id}}/delete" method="post">
            <button class="btn btn-danger">삭제</button>
        </form>
    </div>

    <div class="d-flex justify-content-end">
        <b>작성자</b> : {{board.username}}
    </div>

    <!-- 게시글내용 -->
    <div>
        <h2><b>{{board.title}}</b></h2>
        <hr />
        <div class="m-4 p-2">
            {{board.content}}
        </div>
    </div>

    <!-- 댓글 -->
    <div class="card mt-3">
        <!-- 댓글등록 -->
        <div class="card-body">
            <form action="/reply/save" method="post">
                <textarea class="form-control" rows="2" name="comment"></textarea>
                <div class="d-flex justify-content-end">
                    <button type="submit" class="btn btn-outline-primary mt-1">댓글등록</button>
                </div>
            </form>
        </div>

        <!-- 댓글목록 -->
        <div class="card-footer">
            <b>댓글리스트</b>
        </div>
        <div class="list-group">
            <!-- 댓글아이템 -->
            <div class="list-group-item d-flex justify-content-between align-items-center">
                <div class="d-flex">
                    <div class="px-1 me-1 bg-primary text-white rounded">cos</div>
                    <div>댓글 내용입니다</div>
                </div>
                <form action="/reply/1/delete" method="post">
                    <button class="btn">🗑</button>
                </form>
            </div>
            <!-- 댓글아이템 -->
            <div class="list-group-item d-flex justify-content-between align-items-center">
                <div class="d-flex">
                    <div class="px-1 me-1 bg-primary text-white rounded">ssar</div>
                    <div>댓글 내용입니다</div>
                </div>
                <form action="/reply/1/delete" method="post">
                    <button class="btn">🗑</button>
                </form>
            </div>
        </div>
    </div>
</div>

{{> /layout/footer}}