checkIn 프로젝트(SpringBoot)

Spring Boot + JPA + Mysql 게시판 (2) 게시판 조회

hazy1993 2023. 1. 8. 01:20

게시판 조회

 

조회는 나중에 게시판타입 조건이라던지 

 

페이징이라던지 처리를 해야하나, 전체적인 데이터 조회하는 기능부터 추가하려고합니다.

 

(현재 시간이 너무 늦은관계로 ㅠ)

 

화면만 보여주던 컨트롤러에서

@GetMapping("/freeBoard")
public String FRboardList(Model model){
    return "/board/freeBoard";
}

 

뿌려줄 리스트를 가져오도록 service추가.

@GetMapping("/freeBoard")
public String FRboardList(Model model){
    List<BoardDto> list = boardService.BoardList();
    model.addAttribute("list",list);
    return "/board/freeBoard";
}

 

service단에

public List<BoardDto> BoardList(){
    List<Board> boards= boardRepository.findAll();
    List<BoardDto> boardDtoList = new ArrayList<BoardDto>();

    for(Board board : boards){
        boardDtoList.add(BoardDto.fromEntity(board));
    }
    return boardDtoList;
}

추가.

 

findAll() 하면 현 리파지토리 관련 데이터를 전부 가져오는 기능

데이터를 전부 가져와서 DTO로 변환해준다.

 

 

 

화면단 전체

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
   xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
   layout:decorate="~{layout/layout002}">
<th:block layout:fragment="content002">
<style>
.pink {
      color: #fa626b;
}
.small {
      font-size: 6px;
}
html body a {
   color: currentColor;
}
html body a:hover {
    text-decoration: none;
    color: #fa626b;
}
</style>
   <div class="app-content content">
      <div class="content-wrapper">
         <div class="content-wrapper-before"></div>
         <div class="content-header row">
            <div class="content-header-left col-md-4 col-12 mb-2">
               <h3 class="content-header-title">자유게시판</h3> <!-- Title 입력 -->
            </div>
            <div class="content-header-right col-md-8 col-12">
               <div class="breadcrumbs-top float-md-right">
                  <div class="breadcrumb-wrapper mr-1">
                     <ol class="breadcrumb">
                        <li class="breadcrumb-item"><a href="/home">Home</a></li> <!-- Home LINK -->
                        <li class="breadcrumb-item active">자유게시판</li> <!-- Title 입력 -->
                     </ol>
                  </div>
               </div>
            </div>
         </div>
         <div class="content-body">
            <section id="chartjs-bar-charts">
               <div class="row">
                  <div class="col-12">
                     <div class="card">
                        <div class="card-header">
                           <h4 class="card-title">Check In Company 자유게시판</h4> <!-- 부제목 입력 -->
                        </div>
                        <div class="card-content collapse show">
                                <div class="row">
                              <div class="col-12">
                                 <div class="card">
                                    <div class="card-header">
                                       <h1 class="card-title"><a href="/FRWrite"><span class="pink"><i class="la la-dedent"></i> 글쓰기</span></a></h1>
                                       <a class="small">글쓰기를 클릭하여 새로운 게시글을 작성 할 수 있습니다.</a>
                                       <a class="heading-elements-toggle"><i class="la la-ellipsis-v font-medium-3"></i></a>
                                       <div class="heading-elements">
                                          <ul class="list-inline mb-0">
                                             <li><a data-action="collapse"><i class="ft-minus"></i></a></li>
                                             <li><a data-action="reload"><i class="ft-rotate-cw"></i></a></li>
                                             <li><a data-action="expand"><i class="ft-maximize"></i></a></li>
                                             <li><a data-action="close"><i class="ft-x"></i></a></li>
                                          </ul>
                                       </div>
                                    </div>
                                    <div class="card-content collapse show">
                                       <div class="card-body">
                                          <p class="card-text">자유게시판 게시글 목록</p>
                                       </div>
                                       <div class="table-responsive">
                                          <table class="table table-bordered mb-0">
                                             <thead>
                                                <tr>
                                                   <th>No</th>
                                                   <th width="55%">제목</th>
                                                   <th>작성자</th>
                                                   <th width="16%">작성일자</th>
                                                </tr>
                                             </thead>
                                             <tbody>
                                                <tr th:each="list: ${list}">
                                                   <td>
                                                      <span th:text="${list.boardNo}"></span>
                                                   </td>
                                                   <td>
                                                      <a th:href="@{'/getBoard/' + ${list.boardNo}}">
                                                         <span th:text="${list.boardTitle}"></span>
                                                      </a>
                                                   </td>
                                                   <td>
                                                      <span th:text="${list.boardContent}"></span>
                                                   </td>
                                                   <td>
                                                      <span th:text="${#temporals.format(list.insDate,'yyyy-MM-dd HH:mm')}"></span>
                                                   </td>
                                                </tr>
                                             </tbody>
                                          </table>
                                       </div>
                                    </div>
                                    <div style="padding-top: 20px; text-align: right;">
                                    <button type="button" class="btn mr-1 mb-1 btn-danger btn-sm"><i class="la la-angle-left"></i></button>
                                    <button type="button" class="btn mr-1 mb-1 btn-danger btn-sm"><i class="la la-angle-right"></i></button>
                                    </div>
                                 </div>
                              </div>
                           </div>
                        </div>
                     </div>
                  </div>
               </div>
            </section>
         </div>
      </div>
   </div>
</th:block>
</html>

 

 

list 데이터 thymeleaf 적용부분

<tbody>
   <tr th:each="list: ${list}">
      <td>
         <span th:text="${list.boardNo}"></span>
      </td>
      <td>
         <a th:href="@{'/getBoard/' + ${list.boardNo}}">
            <span th:text="${list.boardTitle}"></span>
         </a>
      </td>
      <td>
         <span th:text="${list.boardContent}"></span>
      </td>
      <td>
         <span th:text="${#temporals.format(list.insDate,'yyyy-MM-dd HH:mm')}"></span>
      </td>
   </tr>
</tbody>

 

 

 

 

 

나중에 Optinal이라던지 추가하고 해야하는데.. 이번프로젝트에 적용할수 있을 지 모르겠다.