Java Spring Boot SpringJDBCでselectするサンプル

Java Spring BootのSpringJDBCでselectするサンプルサンプルです。

確認環境
・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)
  6.ビューのファイル(index.html)
  画面の確認

環境

今回作成/修正するファイルは以下の赤枠の部分です。

以下は、今回使用するMySQLのテーブルです。テーブル名は「syain」です。

id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato

1.pom.xmlの設定

pom.xmlのdependenciesの箇所に以下の2~9行目を追記します。

	<dependencies>
	    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
	</dependencies>

4行目は、jdbcです。

2.application.propertiesの設定

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

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3309/testphp?serverTimezone=JST
spring.datasource.username=root
spring.datasource.password=

1行目は、DB構造の変更を禁止します。
2行目のtestphpはデータベース名です。

3.エンティティのファイル(Syain.java)

エンティティのクラスです。Syainテーブルのデータを格納します。

package com.example.demo;

public class Syain {	
    private Integer id;
    private String name;
    private String romaji;
	public Integer getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public String getRomaji() {
		return romaji;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setRomaji(String romaji) {
		this.romaji = romaji;
	}
}

4.レポジトリのファイル(SyainRepository.java)

レポジトリのファイルです。SQLを実行します。

package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class SyainRepository {
	
	private final JdbcTemplate jdbcTemplate;
	
	@Autowired
	public SyainRepository(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	public List<Syain> getAll() {
		String sql = "select id,name,romaji from syain";
		List<Map<String, Object>> resultSyainList = jdbcTemplate.queryForList(sql);
		List<Syain> list = new ArrayList<Syain>();
		for(Map<String,Object>resultSyain:resultSyainList) {
			Syain syain = new Syain();
			syain.setId((int)resultSyain.get("id"));
			syain.setName((String)resultSyain.get("name"));
			syain.setRomaji((String)resultSyain.get("romaji"));
			list.add(syain);
		}
		return list;
	}
}

21行目は、select文です。
22行目は、JDBCでSQLを実行してデータを取得しています。
24行目からは、取得したデータをエンティの項目に値をセットしています。
29行目は、1行のデータを1インスタンスとしてリストにセットしていまs.
31行目は、リストを返します。

5.コントローラのクラス(MainController.java)

コントローラのクラスです。

package com.example.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test1")
public class MainController {
    @Autowired
    private SyainRepository syainRepository;

    @GetMapping
	public String index(Model model) {
		List<Syain> list = syainRepository.getAll();
		model.addAttribute("SyainList",list);
		return "test1/index";
	}
}

17行目は、SyainRepositoryクラスからデータを取得します。
18行目は、modelにキーと値をセットしています。ビューの読み出しで使用します。
19行目は、test1フォルダのindexファイルを表示します。

6.ビューのファイル(index.html)

ビューのファイルです。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>check</title>
</head>
<body >
<table>
	<tr>
		<th>id</th><th>name</th><th>romaji</th>
	</tr>
	<tr th:each="list : ${SyainList}">
		<td th:text="${list.id}"></td>
		<td th:text="${list.name}"></td>
		<td th:text="${list.romaji}"></td>
	</tr>
</table>
</body>
</html>

12行目のSyainListは、コントローラで設定した値とひも付きます。th:eachでループ処理が行われます。

画面の確認

1.以下のURLにアクセスします。
http://localhost:8080/test1

2.画面は以下のように表示されます。

関連の記事

Java Spring Boot MySQLにJPAでselectするサンプル

△上に戻る