반응형

저번에는 글쓰기에 대해서 알아보았다.

 

이제 쓴 글을 리스트화 시키는 방법에 대해서 스프링 부트와 jpa 방법으로 알아보고자 한다. 

 

 

이렇게 됬다 공부중이라 디자인은 생략한다. 

 

자 이제 시작해보자 

 

우선 리스트를 하기위해 더미데이터를 대략 120개 정도  돌려준다. 

 

컨트롤러에서 해도 되지만 그냥 넣어준다. 

 

CREATE PROCEDURE testDataInsert()
BEGIN
    DECLARE i INT DEFAULT 1;

    WHILE i <= 120 DO
        INSERT INTO board(title, content)
          VALUES(concat('제목',i), concat('내용',i));
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER $$

call testDataInsert

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"> <!-- 위에 xmlns 하면 타임리프 문법을 쓸수 있다.-->
<head>
    <meta charset="UTF-8">
    <title>게시물 리스트 페이지</title>
</head>

    <style>
        .layout{
        width : 500px;
        margin: 0 auto;
        margin-top :40px;
        }
    </style>
<body>
  <div class="layout">
      <table>
          <thead>
                <tr>
                    <th>제목 </th>
                    <th>내용 </th>
                </tr>
          </thead>
          <tbody>
              <tr th:each="board : ${list}">
                  <td th:text="${board.id}">1</td>
                  <td>
                      <a th:text="${board.title}" th:href="@{/board/view(id=${board.id})}"></a>
                  </td>
              </tr>
          </tbody>
      </table>
  </div>
</body>
</html>

우선 정말 간단한..? 리스트 페이지를 만들었다. 

 

이제 페이지에 들어갈 수 있도록 

컨트롤러를 제작해보자

 

    @GetMapping("/board/list")
    public String boardList(Model model){
        System.out.println(boardService.boardList());
        model.addAttribute("list",boardService.boardList());
        return "boardList";
    }

간단하게 Getmapping으로 board에 리스트로 접근한다. 

그리고 리턴타입으로는 html 파일명을 입력 주면 된다. 

 

 이제 Service를 보자 

 

    //게시글 리스트 처리
    public List<Board> boardList(){
        return  boardRepository.findAll();
    }

대략 120개의 리스트덩어리를 받아줘야해서 LIst 타입으로 받아준다. 

이떄 JPA의 findALL()을 써준다. 

 

findALL 이란? 

 

전체 레코드 불러오기 및 정렬 페이징 등을 관리한다.

 

FIndAll을 하면 아래와 같은 코드로 이루어진다.

  select
        board0_.id as id1_0_,
        board0_.content as content2_0_,
        board0_.title as title3_0_ 
    from
        board board0_

 

다시 컨트롤러로 와보자

 

    @GetMapping("/board/list")
    public String boardList(Model model){
        System.out.println(boardService.boardList());
        model.addAttribute("list",boardService.boardList());
        return "boardList";
    }
    model.addAttribute("list",boardService.boardList())

 

로 board라는 이름으로 service에 boardList를 뷰에 뿌려준다. 

 


타임리프 사용법 

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"> <!-- 위에 xmlns 하면 타임리프 문법을 쓸수 있다.-->
<head>
    <meta charset="UTF-8">
    <title>게시물 리스트 페이지</title>
</head>

    <style>
        .layout{
        width : 500px;
        margin: 0 auto;
        margin-top :40px;
        }
    </style>
<body>
  <div class="layout">
      <table>
          <thead>
                <tr>
                    <th>제목 </th>
                    <th>내용 </th>
                </tr>
          </thead>
          <tbody>
              <tr th:each="board : ${list}">
                  <td th:text="${board.id}">1</td>
                  <td>
                      <a th:text="${board.title}" th:href="@{/board/view(id=${board.id})}"></a>
                  </td>
              </tr>
          </tbody>
      </table>
  </div>
</body>
</html>

<html lang="en" xmlns:th="http://www.thymeleaf.org"> 을 써준다.

 

html코드에 그 다음은 jsp에 jstl이랑 비슷하다.

 

th:each 는 c:foreach 와 비슷한거같다.

아까 뿌려준 board리스트가 다 털릴때 까지 html에 뿌려준다. 

 

다음은 상세보기에 대해서 알아보자 

 

 

https://github.com/MoonSeokHyun/SpringBoot_StudyBoard

 

GitHub - MoonSeokHyun/SpringBoot_StudyBoard

Contribute to MoonSeokHyun/SpringBoot_StudyBoard development by creating an account on GitHub.

github.com

 

반응형

+ Recent posts