質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1293閲覧

Spring BootでのMySQLへの接続につきまして

daidai1996

総合スコア14

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/02/02 10:16

編集2020/02/11 14:39

Spring Bootについて学習をしています。
その中でMySQLに接続してJSON形式でデータを持ってきて表示させようとしました。
しかし、MySQLには接続できているようですが
データを表示させようとしたところ表示されません。

また、プログラム起動後にMySQLにログインして当該のテーブルにデータを
確認しましたところ中のテーブルデータが削除されていることを確認致しました。

また以下の参考サイトをベースとして書きました。
Java Spring Boot MySQLにJPAでselectするサンプル

どなたか助言お願い致します

java

1Book.java 2 3package com.sample.ec; 4 5import javax.persistence.Entity; 6import javax.persistence.Id; 7import javax.persistence.Table; 8import javax.persistence.Column; 9 10@Entity 11@Table(name="book") 12 13 14public class Book { 15 @Id 16 @Column(name="id") 17 private Integer id; 18 19 @Column(name="name") 20 private String name; 21 22 @Column(name="price") 23 private Integer price; 24 25 public Integer getId() { 26 return id; 27 } 28 29 public void setId(Integer id) { 30 this.id = id; 31 } 32 33 public String getName() { 34 return name; 35 } 36 37 public void setName(String name) { 38 this.name = name; 39 } 40 41 public Integer getPrice() { 42 return price; 43 } 44 45 public void setPrice(Integer price) { 46 this.price = price; 47 } 48 49 50 51} 52

java

1BookRepository.java 2 3package com.sample.ec; 4import org.springframework.data.jpa.repository.JpaRepository; 5 6public interface BookRepository extends JpaRepository<Book, Integer> { 7 8} 9

java

1DemoWebApplication.java 2 3package com.sample.ec; 4 5import org.springframework.boot.SpringApplication; 6import org.springframework.boot.autoconfigure.SpringBootApplication; 7 8@SpringBootApplication 9public class DemoWebApplication { 10 11 public static void main(String[] args) { 12 SpringApplication.run(DemoWebApplication.class, args); 13 } 14 15} 16

java

1MainController.java 2 3package com.sample.ec; 4 5import java.util.List; 6 7 8import org.springframework.beans.factory.annotation.Autowired; 9import org.springframework.web.bind.annotation.RequestMapping; 10import org.springframework.web.bind.annotation.RestController; 11 12@RestController 13public class MainController { 14 @Autowired 15 private BookRepository bookRepository; 16 17 @RequestMapping(value = "/book") 18 public List<Book> get(){ 19 return bookRepository.findAll(); 20 } 21 22 23}

java

1application.properties 2 3spring.jpa.hibernate.ddl-auto=create 4spring.datasource.url=jdbc:mysql://localhost:3306/bookdb?serverTimezone=JST 5spring.datasource.username=******* 6spring.datasource.password=******* 7spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 8spring.datasource.sql-script-encoding=utf-8 9logging.level.org.springframework.web = trace 10

xml

1pom.xml 2 3<?xml version="1.0" encoding="UTF-8"?> 4<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <modelVersion>4.0.0</modelVersion> 7 <parent> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-parent</artifactId> 10 <version>2.2.2.RELEASE</version> 11 <relativePath/> <!-- lookup parent from repository --> 12 </parent> 13 <groupId>com.EC</groupId> 14 <artifactId>EC</artifactId> 15 <version>0.0.1-SNAPSHOT</version> 16 <name>DemoWeb</name> 17 <description>EC project for Spring Boot</description> 18 19 <properties> 20 <java.version>1.8</java.version> 21 </properties> 22 23 <dependencies> 24 <dependency> 25 <groupId>org.springframework.boot</groupId> 26 <artifactId>spring-boot-starter-web</artifactId> 27 </dependency> 28 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-test</artifactId> 32 <scope>test</scope> 33 <exclusions> 34 <exclusion> 35 <groupId>org.junit.vintage</groupId> 36 <artifactId>junit-vintage-engine</artifactId> 37 </exclusion> 38 </exclusions> 39 </dependency> 40 41 42 <dependency> 43 <groupId>org.springframework.boot</groupId> 44 <artifactId>spring-boot-starter-data-jpa</artifactId> 45 </dependency> 46 <dependency> 47 <groupId>mysql</groupId> 48 <artifactId>mysql-connector-java</artifactId> 49 <scope>runtime</scope> 50 </dependency> 51 52 53 </dependencies> 54 55 56 57 58 <build> 59 <plugins> 60 <plugin> 61 <groupId>org.springframework.boot</groupId> 62 <artifactId>spring-boot-maven-plugin</artifactId> 63 </plugin> 64 </plugins> 65 </build> 66 67</project> 68 69

MySQLのテーブル
データベース名:boodb
テーブル名:book
CREATE TABLE:
mysql> show create table book;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| book | CREATE TABLE book (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
price int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

INSER文:
INSERT INTO bookdb.book (id, name, price) VALUES ('1', '漫画', '400');
INSERT INTO bookdb.book (id, name, price) VALUES ('2', '週刊誌', '500');
INSERT INTO bookdb.book (id, name, price) VALUES ('3', '辞典', '1000');

結果画面のスクショ
スクショ

※2/11 ログを取り直しました。
申し訳ございません。
見ずらいとは思うんですけどログのスクショをとってきました。
ログをとるにあたって以下をapplication.propertiesに
以下を追加しました。

logging.level.root=WARN
logging.level.org.hibernate=ERROR
logging.file=
logging.path=C:/sts/logs

spring.jpa.show-sql = true
spring.jpa.properties.hibernate.format_sql = true
logging.level.org.hibernate.SQL = debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder = trace

ログ1
ログ2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/02 10:27

JOSON → JSON では。
daidai1996

2020/02/02 10:29

ありがとうございます。 修正いたします。
Orlofsky

2020/02/02 12:21

テーブル定義はキャプチャではなく、CREATE TABLEに、テーブル中のデータはINSERTに変更してください。
daidai1996

2020/02/02 12:39

ありがとうございます。 もしよりしければテーブル定義の変更の仕方を教えていただけますでしょうか。
Orlofsky

2020/02/02 12:49

何でも質問するのでは身に付きませんから、 >MySQL CREATE TABLE 取得方法 でググってください。
退会済みユーザー

退会済みユーザー

2020/02/02 13:31

そもそも画像が無駄に余白あるのを見ずらいとおもって余白を減らすのをしないのもいただけないよな。 まあおそらく、組み込みTOMCATが起動してないからサーバーにアクセスできてません。 理由は同じ手の質問で回答してるので割愛
daidai1996

2020/02/02 13:32

すいません。調べてみてはみたんですか 中身のデータをINSERTに変更というがわかりません。 データをINSERT文で入れなおすということですか?
daidai1996

2020/02/02 13:34

ありがとうございます。 TOMCATが起動してない件ついて改めて調べてみます
m.ts10806

2020/02/02 21:07

>中身のデータをINSERTに変更 selectの結果を載せられてもこちらの手元にデータを入れられるわけではないので、CREATE TABLEを提示したように、データはINSERT文で提示してください、という意味かと思います。 ただ、いずれもマークダウン利用してご提示ください。``はマークダウンの機能でもあるため、御覧のようにそのまま表示になってません。
rubytomato

2020/02/03 03:43

> 追記 > コンソールに以下のエラーがあることを確認致しました。 > { /error}: error(HttpServletRequest) > { /error, produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse) 追記されたエラーメッセージですが、これ以外にエラーメッセージがあるように思いますので ご確認のうえ、なるべく全文を質問内容に記載ください。 字数制限で無理な場合はスクリーンショットでもかまいません。
daidai1996

2020/02/08 15:09

質問更新しました。 遅れて申し訳ありません。
rubytomato

2020/02/11 11:59

> 追記 > コンソールに以下のエラーがあることを確認致しました。 > { /error}: error(HttpServletRequest) > { /error, produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse) こちらの件ですが、貼って頂いたスクリーンショットを見ると、これはエラーではなくTRACEレベルのメッセージでした。 ほかにエラーらしいメッセージは出力されていないので、エラーは起きていないのではないでしょうか? 追加で3点ご確認ください。 1) スクリーンショットを撮った時点のMainControllerのソースコードは、質問文に記載のコードと同一でしょうか?  と言うのも、ログでは '/' に対してMainController#getがマッピングされているように見えるからです。 2) アプリケーション起動後、MainController#getのURLにアクセスしデータが返ってこなかった場合、別途SQLクライアントでMySQLにログインして当該のテーブルにデータが登録されているか確認してください。 3) application.propertiesに下記の行を追加してもう一度ログのスクリーンショットを貼りなおしてください。 spring.jpa.show-sql = true spring.jpa.properties.hibernate.format_sql = true logging.level.org.hibernate.SQL = debug logging.level.org.hibernate.type.descriptor.sql.BasicBinder = trace
daidai1996

2020/02/11 14:53

ありがとうございます。 >(1) MainControllerの@RequestMappingの値を "/"に変更しているときのログをとってました。 申し訳ありません。改めて正しいログを取り直しました。 >(2) アプリケーション起動後にySQLにログインして当該のテーブルにデータ を確認しましたところテーブルの中のデータが削除されていました。 データを入れなおして複数回繰り返しても同じ現象を確認致しました。 >(3) 教えて頂いたコードを追加して改めてログを取り直しました。 今の画像は改めて取り直したログとなっております。
rubytomato

2020/02/11 16:20

> 申し訳ありません。改めて正しいログを取り直しました。 > 今の画像は改めて取り直したログとなっております。 スクリーンショット、以前と変わっていないように思います。(ログの日付が2月8日です。) > アプリケーション起動後にySQLにログインして当該のテーブルにデータ > を確認しましたところテーブルの中のデータが削除されていました。 > データを入れなおして複数回繰り返しても同じ現象を確認致しました。 データを登録していてもアプリケーションを起動するとデータが消えるということでしょうか? そういうことであれば、アプリケーション起動後にデータを登録して`/book`にアクセスして、その結果をお知らせください。
guest

回答1

0

ベストアンサー

ControllerやRepository、JPAを使った実装には問題ないのですが、SpringBootの設定にて

properties

1spring.jpa.hibernate.ddl-auto=create

yml

1spring: 2 jpa: 3 hibernate: 4 ddl-auto: create

と、テーブルの初期化をしてしまう設定があるためです。

参考:spring.jpa.hibernate.ddl-auto に設定可能な値

SpringBoot起動時にテーブルの作成やリフレッシュを行う必要がないのであれば、この記述は不要です。

ちなみに動作結果のスクリーンショットも共有します。

イメージ説明

投稿2020/02/12 14:01

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/12 14:14

常時初期化を行うよ
daidai1996

2020/02/16 15:40

ご回答頂いた皆様ありがとうございました。 初期化の設定を削除しましたら解決いたしました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問