SpringのJdbcTemplateでOracleにINSERT発行してみた

スポンサーリンク
スポンサーリンク

SpringのJdbcTemplateでOracleにINSERT発行してみた

SpringのJdbcTemplateを使用してINSERTを実行してみます。

今回のプロジェクト構成は、以下になります。

この記事で使うバージョンは以下になります。

  • Windows 10 Home
  • Java11
  • Spring Tool Suite 4.6.2
  • Oracle 11gXE

JdbcTemplateInsertSampleApplication.java

Spring Starter Projectでプロジェクト作成した時に自動生成されるものです。

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JdbcTemplateInsertSampleApplication {
  public static void main(String[] args) {
    SpringApplication.run(JdbcTemplateInsertSampleApplication.class, args);
  }
}

使用するテーブル

以下のテーブルをOracleに作っておきましょう。

CREATE TABLE animal (animal_id CHAR(3),animal_name VARCHAR2(20));

JdbcTemplateInsert.java

15~16行目でJdbcTemplateを使用するため依存性の注入をしています。

30行目でupdateメソッドを使用してINSERTを実行します。

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
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 com.example.demo.model.Animal;

@Controller
public class JdbcTemplateInsert {

  @Autowired
  JdbcTemplate jdbcTemplate;
  
  
  @GetMapping("/")
  public String init() {
    return "index";
  }
  
  @PostMapping("/insert")
  public String insertAnime(Model model,Animal animal) {
    
    String sqlText  = "INSERT INTO ANIMAL (ANIMAL_ID,ANIMAL_NAME) "
                    + "VALUES (?,?)";
    
    jdbcTemplate.update(sqlText,animal.getAnimalId(),animal.getAnimalName());
    model.addAttribute("ResultMessage","INSERT SUCCESS!!!");
    
    return "index";
  }
}

Animal.java

テーブル定義と同じカラムのフィールドを定義してゲッターセッターを用意します。画面側のindex.htmlで「th:object=”${animal}”」で定義して入力した値を取り出せるようにします。

package com.example.demo.model;

public class Animal {
  private String animalId;
  private String animalName;
  public String getAnimalId() {
    return animalId;
  }
  public void setAnimalId(String animalId) {
    this.animalId = animalId;
  }
  public String getAnimalName() {
    return animalName;
  }
  public void setAnimalName(String animalName) {
    this.animalName = animalName;
  }
}

Spring JdbcTemplateリファレンス

index.html

http://localhost:8888/にアクセスして登録したいIDと動物名を入力して送信を押下して処理が成功したら画面に「INSERT Success!!!」が表示されるようにします。

<!DOCTYPE html>
<html xmlns="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/css/style.css">
<title>JdbcTemplate INSERT Sample</title>
</head>
<body>
  <h1>INSERT sample</h1>
  <p th:text="${ResultMessage}"></p>
  <form method="POST" action="/insert" th:object="${animal}">
    IDを入力してください。<input type="text" name="animalId"><br>
    動物名を入力してください。<input type="text" name="animalName"><br>
    <input type="submit" value="送信">
  </form>
</body>
</html>

INSERTが完了しているかSQL*Plusで確認してみましょう。

SQL> select * from animal;

ANIMAL_ID  ANIMAL_NAME
---------- ----------------------------------------
123        いるか

ちゃんと登録できているみたいですね\(^o^)/

application.properties

ユーザネームとパスワードはご自身のを設定してください。ポートは空いてるものなら何でもいいです。自分の場合、デフォルトの8080を別アプリに割り当ててたので8888にしてます。

server.port=8888
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.driverClassName=oracle.jdbc.OracleDriver

pom.xml

今回のプロジェクトのpomは、以下になります。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.example</groupId>
  <artifactId>SpringTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>JdbcTemplateDDLSample</name>
  <description>Demo project for Spring Boot</description>
  <properties>
    <java.version>11</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc8</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

コメント

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