SpringBoot SpringJDBCでinsertするサンプル

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

確認環境
・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 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 void insertSyain(Syain syain) {
		jdbcTemplate.update("INSERT INTO syain(id,name,romaji) Values(?,?,?)",
				syain.getId(),syain.getName(),syain.getRomaji());
	}
}
public int update(String sql,@Nullable Object... args) throws DataAccessException

17行目のjdbcTemplate.updateメソッドの戻り値は、更新したint型の件数です。

クエスチョンマーク(?)は、プレースホルダです。パラメータで値を設定します。
入力される不正な文字を抑止できるのでSQLインジェクション対策になります。

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#update-java.lang.String-java.lang.Object...-

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

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

package com.example.demo;
import java.time.LocalDateTime;

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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

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

    @GetMapping
	public String index(Model model) {
		Syain syain = new Syain();
		syain.setId(4);	
		syain.setName("竹田");
		syain.setRomaji("takeda");	
		syainRepository.insertSyain(syain);
		return "test1/index";
	}
}

19~22行目は、エンティティのSyainクラスをインスタンス化し値をセットしています。
23行目は、登録処理を行います。

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

ビューのファイルです。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>check</title>
</head>
<body >
OK
</body>
</html>

登録完了後に文字のOKが表示されます。

登録の確認

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

2.syainテーブルにデータが追加されます。

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

関連の記事

SpringBoot SpringJDBCでselectするサンプル

△上に戻る