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

スポンサーリンク

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

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

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

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

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

JdbcTemplateDeleteSampleApplication.java

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

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

使用するテーブル

以下のテーブルとデータをOraclに作っておきましょう。

CREATE TABLE animal (animal_id CHAR(3),animal_name VARCHAR2(20));
insert into animal values ('123','いるか');
commit;
select * from animal;
SQL> CREATE TABLE animal (animal_id CHAR(3),animal_name VARCHAR2(20));

表が作成されました。

SQL> insert into animal values ('123','いるか');

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> select * from animal;

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

JdbcTemplateDelete.java

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

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

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 org.springframework.web.bind.annotation.RequestParam;

@Controller
public class JdbcTemplateDelete {

  @Autowired
  JdbcTemplate jdbcTemplate;
  
  @GetMapping("/")
  public String init() {
    return "index";
  }
  
  @PostMapping("/delete")
  public String deleteAnimal(@RequestParam("deleteId") String deleteId,Model model) {
                      
    String sqlText = "DELETE FROM ANIMAL WHERE ANIMAL_ID = ?";
    int result = jdbcTemplate.update(sqlText,deleteId);
    model.addAttribute("ResultMessage", result + "件 DELETE SUCCESS!!!");
    
    return "index";
  }
  
}

Spring JdbcTemplateリファレンス

index.html

http://localhost:8888/にアクセスして削除したいIDを入力して送信を押下して処理が成功したら画面に「〇件 DELETE Success!!!」が表示されるようにします。

<!DOCTYPE html>
<html xmlns="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/css/style.css">
<title>JdbcTemplate DELETE Sample</title>
</head>
<body>
  <h1>DELETE sample</h1>  
  <p th:text="${ResultMessage}"></p>
  <form method="POST" action="/delete">
    削除するIDを入力してください。<input type="text" name="deleteId">
    <input type="submit" value="送信">
  </form>
</body>
</html>

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をコピーしました