Spring BootからJPAでMySQLにselectするサンプルです。
(確認環境:Spring Boot 2.5,JDK 11,STS 4)
目次
サンプル | 環境 |
1.pom.xmlの設定 | |
2.application.propertiesの設定 | |
3.エンティティのファイル(Syain.java) | |
4.レポジトリのインターフェース(SyainRepository.java) | |
5.コントローラのクラス(MainController.java) | |
データの確認 |
環境
作成/修正するファイルは以下の赤枠の部分です。
以下は、今回使用するMySQLのテーブルです。テーブル名は「syain」です。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
githubにコードがあります。
https://github.com/ut23405/springbootdb/tree/main/springboot-jpa-mysql
1.pom.xmlの設定
必要なライブラリです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</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:mysql://localhost:3309/testphp
spring.datasource.username=root
spring.datasource.password=
server.port = 8765
1行目のtestphpはデータベース名です。
mysqlのポート番号のデフォルトは3306ですが、3309に変更しています。
3.エンティティのファイル(Syain.java)
エンティティのクラスです。
Syainテーブルのデータを格納します。
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name="syain")
public class Syain {
@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.レポジトリのインターフェース(SyainRepository.java)
レポジトリのインターフェースです。
SQLを実行する部分に該当します。
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SyainRepository extends JpaRepository<Syain, Integer> {
}
4行目は、JpaRepositoryインターフェースを継承しています。
findAllなどのメソッドを使用できるようになります。
引数のSyainはエンティティの型で、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 SyainRepository syainRepository;
@GetMapping("/test1")
public List<Syain> get() {
return syainRepository.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"}] |
以下は、springのAccessing data with MySQLのリンクです。
https://spring.io/guides/gs/accessing-data-mysql/
関連の記事
SpringBoot hello worldを表示するサンプル
SpringBoot フォームの値を別画面に渡す
SpringBoot DI(依存性の注入)のサンプル
SpringBoot AOPのサンプル
SpringBoot JSONの送信と受信のサンプル