2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java】Spring BootとMySQLを使ったREST API構築入門 - データベースからテーブルのデータを取得する

Posted at

この記事では、build.gradle に必要な依存関係を追加済みの状態で、Spring BootアプリケーションからMySQLデータベースに接続し、test_table テーブルのデータを取得するREST APIを構築する手順について解説します。

準備

1. テーブル作成

A5でテーブルを作成し、データを投入しておく。
image.png

手順

1. TestTable エンティティの作成

まず、データベースの test_table テーブルに対応するJavaクラスを作成します。このクラスはJPAのエンティティとして設定され、Spring Data JPAがデータベースのテーブルとマッピングを行います。

エンティティクラスコード例

package com.example.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "test_table")
public class TestTable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String createDatetime;
    private String updateDatetime;

    // GetterとSetter
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCreateDatetime() {
        return createDatetime;
    }

    public void setCreateDatetime(String createDatetime) {
        this.createDatetime = createDatetime;
    }

    public String getUpdateDatetime() {
        return updateDatetime;
    }

    public void setUpdateDatetime(String updateDatetime) {
        this.updateDatetime = updateDatetime;
    }
}
  • @Entity@Table(name = "test_table") アノテーションにより、test_table テーブルと対応するエンティティを定義。
  • @Id@GeneratedValue は主キー(idフィールド)の自動生成戦略を指定します。

2. TestTableRepository インターフェースの作成

次に、Spring Data JPAが提供する JpaRepository を使ってリポジトリインターフェースを定義します。

リポジトリインターフェースコード例

package com.example.demo.repository;

import com.example.demo.entity.TestTable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TestTableRepository extends JpaRepository<TestTable, Long> {
}
  • JpaRepository<TestTable, Long> を継承することで、基本的なデータアクセスメソッド(CRUD操作)を自動的に利用できるようになります。
  • SQLを記述せずに、データベースからデータを取得したり保存できるのがポイントです。

3. TestTableController の作成

次に、コントローラークラスを作成し、TestTableRepository を使ってデータを取得するエンドポイントを定義します。

コントローラーコード例

package com.example.demo.controller;

import com.example.demo.entity.TestTable;
import com.example.demo.repository.TestTableRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class TestTableController {

    @Autowired
    private TestTableRepository testTableRepository;

    @GetMapping("/test-table")
    public List<TestTable> getAllTestTableData() {
        return testTableRepository.findAll();
    }
}
  • @RestController アノテーションでコントローラーを定義し、SpringがHTTPリクエストを処理するクラスであることを示します。
  • @GetMapping("/test-table") アノテーションで、GET メソッドのエンドポイント /test-table を指定。エンドポイントにアクセスすると、test_table のデータが JSON 形式で返されます。

4. アプリケーションを起動して確認

Spring Boot アプリケーションを起動し、ブラウザまたはツールを使って、以下のURLにアクセスしてデータを確認します。

http://localhost:8080/test-table

5. 結果の確認

ブラウザやPostmanなどのツールでエンドポイントにアクセスすると、test_table に格納されているデータがJSON形式で表示されます。以下のようなJSONデータが返されることが期待されます。

[
    {
        "id": 1,
        "name": "tanaka",
        "createDatetime": null,
        "updateDatetime": null
    },
    {
        "id": 2,
        "name": "suzuki",
        "createDatetime": null,
        "updateDatetime": null
    },
    {
        "id": 3,
        "name": "sato",
        "createDatetime": null,
        "updateDatetime": null
    }
]

以上で、Spring BootアプリケーションとMySQLデータベースが連携し、test_table のデータを取得できるREST APIが構築されました。SQL文を直接記述することなく、Spring Data JPAのリポジトリを利用してデータの取得が可能になり、効率的な開発が実現できます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?