Spring BootからJPAでPostgreSQLにselectするサンプルです。
(確認環境:Spring Boot 2.5,JDK 11,STS 4,PostgreSQL13)
目次
サンプル | 環境 |
1.pom.xmlの設定 | |
2.application.propertiesの設定 | |
3.エンティティのファイル(Employee.java) | |
4.レポジトリのインターフェース(EmployeeRepository.java) | |
5.コントローラのクラス(MainController.java) | |
データの確認 |
環境
作成/修正するファイルは以下の赤枠の部分です。
以下は、今回使用するPostgreSQLのテーブルです。テーブル名は「Employee」です。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
githubにコードがあります。
https://github.com/ut23405/springbootdb/tree/main/springboot-jpa-postgresql
1.pom.xmlの設定
必要なライブラリです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
JPAとは
JPAは、Java Persistence APIの略です。
Javaのオブジェクトとテーブルのデータを対応付けます。
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa
2.application.propertiesの設定
application.propertiesにDB情報を記述します。DB情報は1~3行目です。
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/testdb1
spring.datasource.username=postgres
spring.datasource.password=postgres
server.port = 8765
1行目のtestpdb1はデータベース名です。
PostgreSQLのポート番号のデフォルトは5432です。
3.エンティティのファイル(Employee.java)
エンティティのクラスです。
Employeeテーブルのデータを格納します。
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name="employee")
public class Employee {
@Id
private Integer id;
private String name;
private String romaji;
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public String getRomaji() {
return romaji;
}
}
4.レポジトリのインターフェース(EmployeeRepository.java)
レポジトリのインターフェースです。
SQLを実行する部分に該当します。
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
}
4行目は、JpaRepositoryインターフェースを継承しています。
findAllなどのメソッドを使用できるようになります。
引数のEmployeeはエンティティの型で、Integerは@Idの型です。
以下は、JpaRepositoryインターフェースのリンクです。
https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html
5.コントローラのクラス(MainController.java)
List<T> findAll() |
コントローラのクラスです。
package com.example.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@Autowired
private EmployeeRepository employeeRepository;
@GetMapping("/test1")
public List<Employee> get() {
return employeeRepository.findAll();
}
}
7行目のRestControllerアノテーションは、メソッドの戻り値を画面に表示します。
14行目は、findAllメソッドでデータを全件取得しています。JpaRepositoryを継承しているため可能です。
データの確認
1.以下のURLにアクセスします。
http://localhost:8765/test1
2.画面にJSON形式で表示されます。以下は整形後です。
[
{
"id": 1,
"name": "鈴木",
"romaji": "suzuki"
},
{
"id": 2,
"name": "田中",
"romaji": "tanaka"
},
{
"id": 3,
"name": "佐藤",
"romaji": "sato"
}
]
関連の記事
SpringBoot hello worldを表示するサンプル
SpringBoot フォームの値を別画面に渡す
SpringBoot DI(依存性の注入)のサンプル
SpringBoot AOPのサンプル
SpringBoot JSONの送信と受信のサンプル