Spring Boot + JPA
jpaを使用してJavaオブジェクトとテーブルを簡単にマッピング
データベースはmariadbを使用します.
Boardオブジェクトの作成
primarykeyを指定するには、@Id宣言を追加します.
@GeneratedValue宣言を使用すると、id値が自動的に増加します.
レポートの作成
ボードデータ出力
localhost:8080/board/list
boardテーブルのデータが画面に出力されます.
データベースは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テーブルのデータが画面に出力されます.
Reference
この問題について(Spring Boot + JPA), 我々は、より多くの情報をここで見つけました https://velog.io/@jooog/Spring-Boot-JPAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol