Java SpringBootとOracle11gr2XEを連携させてみた

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

SpringBootとOracle11gr2XEを連携させてみた

タイトルの通りSpringBootでOracle Express Edition 11g r2と連携させてみました。

環境は以下の通りです。

  • Windows 10 Home
  • Java11
  • Spring Tool Suite 4.6.2
  • Oracle Express Edition 11g r2

プロジェクトの作成

「File」→「New」から以下の「Spring Starter Project」を押下する。

ここになかったら「Other」の中の「Spring Boot」の中にあります。

「New Spring Starter Project」のウィンドウが開くので「Name」にプロジェクト名を入れましょう。今回は「HelloWorldOracle」で作成します。「Next>」を押下しましょう。

「New Spring Starter Project Dependencies」の画面がでてくるので、今回は「Spring Web」と「Thymeleaf」と「Oracle Driver」と「JDBC API」を選択しましょう。選択したら「Finish」を押下。

作成されたプロジェクト

以下のようにプロジェクトが作成されるはずです。

作成タイミングによっては、バージョンが違って動かないなんでこともあるかもなのでpom.xmlを乗っけときます。

<?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.3.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>HelloWorldOracle</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>HelloWorldOracle</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-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>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>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

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

</project>

application.properiesの設定

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

index.htmlとHelloWorldOracle.javaの作成

以下のように「index.html」と「HelloWorldOracle.java」を作成する。今回は、SpringBootとOracleの連携が目的なのでMVCモデルに沿っていないので悪しからず。。。

今回「index.html」は、「templates」配下に配置しました。

「HelloWorldOracle.java」は、「com.example.demo」に「controller」パッケージを追加してその配下に配置しました。

「index.html」の内容

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>HelloWorldOracle</title>
</head>
<body>
	<h1>SpringBoot</h1>
	<p th:text="${message}"></p>
	<form method="post" action="/findOneId">
		<p>001を入力してください</p><input type="text" name="animalId" th:value="${animalId}"/>
		<input type="submit" value="送信"/>
	</form>
	<table>
		<tr>
			<td>ID:</td><td th:text="${animalId}"></td>
		</tr>
		<tr>
			<td>Name:</td><td th:text="${animalName}"></td>
		</tr>
		<tr>
			<td>address:</td><td th:text="${address}"></td>
		</tr>
		
	</table>
</body>
</html>

「HelloWorldOracle.java」の内容

package com.example.demo.controller;

import java.util.Map;

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 HelloWorldOracle {
	
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	@GetMapping("/")
	public String helloWorldOracle(Model model) {
		
		model.addAttribute("messege","HelloWorldOracle");
		return "index";
	}
	
	@PostMapping("/findOneId")
	public String fineOneId(@RequestParam("animalId") String id, Model model) {
		
		String sqlText = "SELECT animal_id ,animal_name ,address"
				+ " FROM animal"
				+ " WHERE animal_id = ?";
		
		Map<String,Object> animal = jdbcTemplate.queryForMap(sqlText,id);
		
		model.addAttribute("animalId",animal.get("animal_id"));
		model.addAttribute("animalName",animal.get("animal_name"));
		model.addAttribute("address",animal.get("address"));
		
		return "index";
	}
	
}

Oracle側の準備

以下のテーブルとデータを用意しておきます。

--テーブル作成
CREATE TABLE animal (
	animal_id VARCHAR(3) ,
	animal_name VARCHAR(10),
	address VARCHAR(10)
);

--データ作成
INSERT INTO animal(animal_id,animal_name,address)
VALUES('001','いるか','海');

これで準備完了しました。「http://localhost:8888/」にアクセスしてID検索をしましょう。Oracleとの連携ができることが確認できます。

コメント

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