SpringBoot JPAでMySQLにselectするサンプル

Spring BootからJPAでMySQLにselectするサンプルです。
Spring DATA JPAを使用します。

確認環境
・Spring Boot 2.3.3
・JDK 11.0.2
・STS 4.7.2

目次

サンプル 環境
  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

1.pom.xmlの設定

pom.xmlの設定です。以下をdependenciesの中に追加します。

		<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>

3行目は、jpaの文字があります。
7行目は、mysqlのドライバです。
11行目は、 @GetMapping等で必要です。

JPA

JPAは、Java Persistence APIの略です。
Javaのオブジェクトとテーブルのデータを対応付けます。

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa

2.application.propertiesの設定

application.propertiesにDB情報を記述しています。

spring.datasource.url=jdbc:mysql://localhost:3309/testphp?serverTimezone=JST
spring.datasource.username=root
spring.datasource.password=
server.port = 8765

1行目のtestphpはデータベース名です。

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)

@NoRepositoryBean
public interface JpaRepository<T,ID>
extends PagingAndSortingRepository<T,ID>, QueryByExampleExecutor<T>

レポジトリのインターフェースです。
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の送信と受信のサンプル

△上に戻る