1. BoardNativeRepository findAll 만들기

public List<Board> findAll(){
    Query query = em.createNativeQuery("select * from board_tb order by id desc", Board.class);
    return query.getResultList();
}

2. Junit 단위 테스트

package shop.mtcoding.blog.board;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.Import;

import java.util.List;

@Import(BoardNativeRepository.class)
@DataJpaTest
public class BoardNativeRepositoryTest {

    @Autowired // DI
    private BoardNativeRepository boardNativeRepository;

    @Test
    public void findAll_test(){
        // given

        // when
        List<Board> boardList = boardNativeRepository.findAll();

        // then
        System.out.println("findAll_test/size : "+boardList.size());
        System.out.println("findAll_test/username : "+boardList.get(2).getUsername());

        // org.assertj.core.api
        Assertions.assertThat(boardList.size()).isEqualTo(4);
        Assertions.assertThat(boardList.get(2).getUsername()).isEqualTo("ssar");
    }
}

Untitled

Untitled

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

@GetMapping("/" )
public String index(HttpServletRequest request) {
    List<Board> boardList = boardNativeRepository.findAll();
    request.setAttribute("boardList", boardList);
    return "index";
}

4. 게시글 목록보기 뷰 렌더링

{{> /layout/header}}

<div class="container p-5">

    {{#boardList}}
        <div class="card mb-3">
            <div class="card-body">
                <h4 class="card-title mb-3">{{title}}</h4>
                <a href="/board/{{id}}" class="btn btn-primary">상세보기</a>
            </div>
        </div>
    {{/boardList}}

    <ul class="pagination d-flex justify-content-center">
        <li class="page-item disabled"><a class="page-link" href="#">Previous</a></li>
        <li class="page-item"><a class="page-link" href="#">Next</a></li>
    </ul>

</div>

{{> /layout/footer}}

5. 게시글 목록보기에 시간 출력하기

Untitled

implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
package shop.mtcoding.blog.util;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.sql.Timestamp;
import java.util.Date;

public class MyDateUtil {

    public static String timestampFormat(Timestamp time){
        Date currentDate = new Date(time.getTime());
        return DateFormatUtils.format(currentDate, "yyyy-MM-dd HH:mm");
    }
}