Spring Boot + JPA


jpaを使用してJavaオブジェクトとテーブルを簡単にマッピング
データベースはmariadbを使用します.
Boardオブジェクトの作成
package hello.itemservice.model;


import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Data
public class Board {

    //primarykey
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String content;
}
@Entityアクションを使用してテーブルを作成します.
primarykeyを指定するには、@Id宣言を追加します.
@GeneratedValue宣言を使用すると、id値が自動的に増加します.

レポートの作成
package hello.itemservice.repository;
import hello.itemservice.model.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

public interface BoardRepository extends JpaRepository<Board, Long> {} 
スプリングガイドによって自動的に生成されるレポートを使用できます.
@Autowired
private BoardRepository boardRepository;

boardRepository.save();
boardRepository.findById();
@Controller
@RequestMapping("/board")
public class BoardController {

    @Autowired
    private BoardRepository boardRepository;

    //페이지 표시하기
    @GetMapping("/list")
    public String list(Model model, @PageableDefault(size = 2) Pageable pageable){
         Page<Board> boards = boardRepository.findAll(pageable);
         //boardrepository에서 찾아온다

         int startPage = Math.max(1, boards.getPageable().getPageNumber() -4);
         int endPage = Math.min(boards.getTotalPages(), boards.getPageable().getPageNumber() +4);
         model.addAttribute("startPage", startPage);
         model.addAttribute("endPage", endPage);
         model.addAttribute("boards", boards);
        return "board/list";
    }
アクセスしたboardsデータをモデルに挿入し、ページング処理を行い、list htmlファイルに戻り呼び出します.
ボードデータ出力
<div class="container" style="margin-top: 5rem">
    <div class="py-5 text-center">
        <p style="font-size: 4rem; text-align: left">게시판</p>
        <div style="font-size: 2rem; text-align: left">총 건수: <span th:text="${boards.totalElements}"></span></div>
        <div style="text-align: right"><a th:href="@{/board/form}"><button class="btn btn-info" style="font-size: 2rem">글쓰기</button></a></div>
    </div>

    <table class="table table-striped" style="font-size: 2rem">
        <thead>
        <tr>
            <th scope="col">번호</th>
            <th scope="col">제목</th>
            <th scope="col">내용</th>

        </tr>
        </thead>
        <tbody>
        <tr th:each="board: ${boards}" style="font-size: 1.8rem">
            <td th:text="${board.id}"></td>
            <td>
                <a th:text="${board.title}" th:href="@{/board/form(id=${board.id})}"></a>
            </td>
            <td th:text="${board.content}"></td>

        </tr>

        </tbody>
    </table>
データベース・テーブルが作成されました.controllerを使用しましょう.
localhost:8080/board/list
@Controller
@RequestMapping("/board")
public class BoardController {

 @Autowired
 private BoardRepository boardRepository;
 
 @GetMapping("/list")
 public String list(Model model){
    List<Board> boards = boardRepository.findAll();
     //boardrepository에서 찾아온다

    model.addAttribute("boards", boards);
    return "board/list";
        
    }

}
localhost:8080/board/list.
boardテーブルのデータが画面に出力されます.