👏

Spring Boot入門〜データアクセス編〜

2023/02/23に公開

Spring BootからMySQLを使ってSELECTする簡単なプログラムです。
本ページは、chatGPTにて生成した文章に加筆修正をしています。

MySQLのインストール

1. MySQLのインストール

HomeBrewを使ってMySQLをインストールします。
ターミナルを開いて以下のコマンドを実行してください。

brew install mysql

2. MySQLサーバの起動

MySQLを起動します。

mysql.server start

3. MySQLの設定

MySQLにログインしデータベースを作成します。

mysql -u root

ログイン後、以下のコマンドでデータベースを作成します。

CREATE DATABASE testdb;

作成したデータベースに切り替えます。

USE testdb;

切り替え後、以下のDDLを実行します。

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

SpringBootアプリケーション作成

1. Spring Initializrでプロジェクト作成

Spring Initializrにアクセスし、以下の設定でプロジェクトを作成する。

category value
Project Maven Project
Language Java11
SpringBoot 2.6.2
Packaging jar

依存性は以下を追加する。

  • Spring Web
  • Spring Data JPA
  • MySQL Driver

2. アプリケーションの実装

以下のようなモデルクラスを作成します。

@Entity
@Table(name="employee")
public class Employee {
    @Id
    @GeneratedValue(storategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    private String department;
    
    // getter, setter, constructorは省略
}

以下のようなRepositoryインターフェースを作成します。

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

以下のようなControllerクラスを作成します。

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeRepsitory employeeRepository;
    
    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }
    
    @PostMapping
    public Employee createEmployee(@RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

以下のようにアプリケーションの設定を編集します。
(ここではaplication.propertiesの前提とします。)

spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spirng.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true

アプリケーションの実行

以下のコマンドで実行します。

./mvnw spring-boot:run

Discussion