Spring Boot + JPAでMySQLに接続する方法

Spring Boot + JPAでMySQLに接続する方法

STSのスタータープロジェクトがかなり進化していたのでおさらいです。

Spring BootでMySQLに接続する」を参考にします。Spring Bootを起動まではできましたが、MySQLに接続するにはapplication.propertiesをさらに追加する必要があります。

spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=system
spring.jpa.database=MYSQL
spring.jpa.hibernate.ddl-auto=update

spring.jpa.database=MYSQL

自動で生成されるSQLやDDLが、MySQL向けになるように指示します。

spring.jpa.hibernate.ddl-auto=update

Entityになるクラスを作ると、自動でテーブルの作成、項目変更をしてくれるようにします。

MYSQLに接続してテーブルとレコードをインサートします。

スタートメニューから「MySQL 5.7 Command Line Client」を実行します。パスワードはMySQLインストール時に設定したパスワードを入力してください。

まずデータベースを作ります。

create database testdb;

testdbに切り替えます。

use testdb;

次にテーブルを作成します。

CREATE TABLE `employee_tbl` (
`empno` bigint(20) NOT NULL AUTO_INCREMENT,
`empname` varchar(255) DEFAULT NULL,
PRIMARY KEY (`empno`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

テーブル作成できたらレコードを適当にインサートします。

insert into employee_tbl
(empname)
values
('従業員A')
,('従業員B')
,('従業員C')
,('従業員D');

ちゃんとインサートできているか確認してみます。

mysql> select * from employee_tbl;
+-------+---------+
| empno | empname |
+-------+---------+
| 1 | 従業員A |
| 2 | 従業員B |
| 3 | 従業員C |
| 4 | 従業員D |
+-------+---------+
4 rows in set (0.00 sec)

Entityクラスを作成する

package jp.co.confrage;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Getter;

@Entity
@Table(name="employee_tbl")
@Getter
public class Employee {
  @Id
  @Column(name="empno")
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Long empno;

  @Column(name="empname")
  private String empname;
}

Repositoryインタフェースを作成する

package jp.co.confrage;

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

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

Controllerクラスを作成する

package jp.co.confrage;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.RestController;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RestController
public class DemoController {
  @Autowired
  EmployeeRepository empRepository;
  @RequestMapping(value = "/", method = RequestMethod.GET)
  public String index(Model model) {
    List<Employee> emplist=empRepository.findAll();
    model.addAttribute("employeelist", emplist);
    return "index";
  }
}

遷移先HTMLを作成する

return “index”;としているのでsrc/main/resources/templates/配下にindex.htmlを作成します。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Springboot</title>
  <meta charset="utf-8" />
</head>
<body>
  <table>
    <tr th:each="emp : ${employeelist}" th:object="${emp}">
      <td th:text="*{empno}"></td>
      <td th:text="*{empname}"></td>
    </tr>
  </table>
</body>
</html>

プロジェクトを右クリックして、Spring Bootアプリケーションを実行します。

http://localhost:8080/にアクセスすると以下の画面が表示されるはずです。

Spring Boot + JPAでMySQLに接続する方法

参考サイト

※MVCモデルで考えるなら、コントローラからサービスを呼び出してサービスクラスでDB処理するのが本来あるべき姿です。

PostgreSQLのケース

PostgreSQLに接続したい場合は、application.yml(properties)は以下のようにします。

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/DB名
    username: postgres
    password: xxxxyyyy

driverClassNameは省略しても問題ないようです。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました