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の中に追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3行目は、JdbcTemplate等で必要です。
7行目は、mysqlのドライバです。
11行目は、 @GetMapping等で必要です。
15行目は、thymeleafです。
2.application.propertiesの設定
application.propertiesにDB情報を記述しています。
spring.datasource.url=jdbc:mysql://localhost:3309/testphp?serverTimezone=JST
spring.datasource.username=root
spring.datasource.password=
server.port = 8765
1行目の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>>syainList = jdbcTemplate.queryForList(sql);
List<Syain> list = new ArrayList<>();
for(Map<String,Object> str1 : syainList) {
Syain syain = new Syain();
syain.setId((int)str1.get("id"));
syain.setName((String)str1.get("name"));
syain.setRomaji((String)str1.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:8765/test1
2.画面は以下のように表示されます。
関連の記事