SpringBootでEntityを使ったMySQL接続の基礎

# この記事はこれの続きです

https://qiita.com/waokitsune/items/f342f2f3b10df81d1679

# 概要

『テーブルのレコードの値をコンソールに表示する』のが本記事のゴールです。
**最小限のコード** かつ **超基本的な内容** となっています。

# MySQL側

『neko』という名前のスキーマ―に、『unko』という名前のテーブル。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/2e3c2e26-3bc3-af9b-ece7-b74a22155046.png)

カラムは2つのみ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/13708f76-de88-302d-9f36-cd78f28557b3.png)

あらかじめレコードが入っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/003216cd-345d-80ca-da08-94b7a0928aa7.png)

# build.gradle

dependenciesに下記の赤枠部分を追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/c9504677-ad31-24d4-70f8-32a785dbe9af.png)

```:コピペ用
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
```

gradle設定ファイル変更したら下記忘れないように注意。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/4a8ddc0b-0c7d-8790-7a49-f0e4eacdf4e6.png)

# application.properties

MySQL接続情報を追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/2f286611-96c8-31e4-1c79-c27dd5d4da57.png)

```:コピペ用
spring.datasource.url=jdbc:mysql://サーバーIPアドレス:MySQLポート番号/スキーマ―名
spring.datasource.username=ユーザー名
spring.datasource.password=パスワード
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```

# テーブルの構造に沿ったクラスを作成

```java:Unko.java
package com.example.demo;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Data;


//クラス名はデータベースのテーブル名と一致させる必要があります。

@Entity
@Data
public class Unko {
	
	
	public Unko() {}
	
	
	//変数名はテーブルのカラム名と一致させる必要があります。
	
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer record_id;
	
	
	private String test_val;

	
}
```

# Repositoryクラス作成

```java:UnkoRepository.java
package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface UnkoRepository extends JpaRepository<Unko, Integer> {
}
```

# Serviceクラス作成

```java:UnkoService.java
package com.example.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


@Service
@Transactional
public class UnkoService {

	
	@Autowired
    UnkoRepository unkoRepository;

	
    public List<Unko> findAll() {
        return unkoRepository.findAll();
    }
    
    
}
```

# 作ったServiceを使ってみる

```java:DemoController.java
package com.example.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;


@Controller
public class DemoController {

	
	@Autowired
    UnkoService unko_service;
	
	
	@GetMapping("/")
	public String getIndex() {
		
		
		//MySQLから全レコード分取得。
		List<Unko> unko_list_ = unko_service.findAll();
		
		
		//取得した中身確認。
		unko_list_.forEach(item_ -> {
			System.out.println(item_.getRecord_id());
			System.out.println(item_.getTest_val());
        });
		
		
		return "/index";
		
		
	}
	
	
}
```

# 実行結果

ブラウザーで『http:/\/localhost:8080/』にアクセスすると、STS4側のコンソールは下記。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/767c9c6a-e48f-d867-1211-29e2c697c756.png)

# 最終的な構成

赤枠が追加 or 変更になったファイルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/b605691d-dad6-bc59-2478-a4927aec3d0a.png)

# この記事の続き

https://qiita.com/waokitsune/items/0d4702b97d1ef99c03c1

# 参考サイトさん

https://learning-collection.com/springboot%E5%85%A5%E9%96%80-vol-6%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E6%BA%96%E5%82%99%E3%82%92%E3%81%97%E3%82%88%E3%81%86/

https://qiita.com/t-yama-3/items/4f3e98b72edea66e7871

# バージョン

Microsoft Windows [Version 10.0.19045.4170]
Spring Boot v3.1.9