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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

2回答

2964閲覧

SpringBoot(Spring解体新書) Mybatisでのデータベース操作ができない

1998Ttf

総合スコア6

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2021/09/25 09:12

###実現したいこと
SpringBoot初心者です。現在、「Spring解体新書第2版」を用いて、Spring Bootの学習をしています。

その中で、MayBatisを使用してデータベースを操作するというセクションがあるのですが、

そこで現在つまづいています。

結論↓

アプリケーションを実行すると、エラーが発生し、動作しない状態でございます。

内容を下記に載せますので、どうかご教授いただけないでしょうか。

###エラー内容

// エラー内容 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scriptDataSourceInitializer' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceInitializationConfiguration$SharedCredentialsDataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #2 of class path resource [schema.sql]: # ユーザーマスタ CREATE TABLE IF NOT EXISTS m_user (user_id VARCHAR(50) PRIMARY KEY, password VARCHAR(100), user_name VARCHAR(50), birthday DATE, age INT, gender INT, department_id INT, role VARCHAR(50)); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります "[*]# ユーザーマスタ CREATE TABLE IF NOT EXISTS M_USER (USER_ID VARCHAR(50) PRIMARY KEY, PASSWORD VARCHAR(100), USER_NAME VARCHAR(50), BIRTHDAY DATE, AGE INT, GENDER INT, DEPARTMENT_ID INT, ROLE VARCHAR(50))" Syntax error in SQL statement "[*]# ユーザーマスタ CREATE TABLE IF NOT EXISTS M_USER (USER_ID VARCHAR(50) PRIMARY KEY, PASSWORD VARCHAR(100), USER_NAME VARCHAR(50), BIRTHDAY DATE, AGE INT, GENDER INT, DEPARTMENT_ID INT, ROLE VARCHAR(50))"; SQL statement:

schemaSql

1CREATE TABLE IF NOT EXISTS employee (id VARCHAR(50) PRIMARY KEY, name VARCHAR(50), age INT); 2 3# ユーザーマスタ 4CREATE TABLE IF NOT EXISTS m_user (user_id VARCHAR(50) PRIMARY KEY, password VARCHAR(100), user_name VARCHAR(50), birthday DATE, age INT, gender INT, department_id INT, role VARCHAR(50)); 5 6# 部署マスタ 7CREATE TABLE IF NOT EXISTS m_department (department_id INT PRIMARY KEY, department_name VARCHAR(50)); 8 9# 給料テーブル 10CREATE TABLE IF NOT EXISTS t_salary (user_id VARCHAR(50), year_monthes VARCHAR(50), salary INT, PRIMARY KEY(user_id, year_monthes));

dataSql

1INSERT INTO employee (id, name, age) VALUES('1', 'Tom', 30); 2 3# ユーザーマスタ 4INSERT INTO m_user 5( 6 user_id, 7 password, 8 user_name, 9 birthday, 10 age, 11 gender, 12 department_id, 13 role 14) 15 VALUES 16( 17 'system@co.jp', 18 'password', 19 'システム管理者', 20 '2000-01-01', 21 21, 22 1, 23 1, 24 'ROLE_ADMIN' 25), 26( 27 'user@co.jp', 28 'password', 29 'ユーザー1', 30 '2000-01-01', 31 21, 32 2, 33 2, 34 'ROLE_GENERAL' 35); 36 37# 部署マスタ 38INSERT INTO m_department 39( 40 department_id, 41 department_name 42) 43 VALUES 44(1, 'システム管理部'), 45(2, '営業部'); 46 47# 給料テーブル 48INSERT INTO t_salay 49( 50 user_id, 51 year_monthes, 52 salay 53) 54 VALUES 55('user@co.jp', '2020/11', 280000), 56('user@co.jp', '2020/12', 290000), 57('user@co.jp', '2021/01', 300000);

applicationProperties

1spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 2spring.datasource.driver-class-name=org.h2.Driver 3spring.datasource.username=sa 4spring.datasource.password= 5spring.datasource.sql-script-encoding=UTF-8 6spring.datasource.initialize=true 7spring.datasource.schema=classpath:schema.sql 8spring.datasource.data=classpath:data.sql 9 10# H2DB 11spring.h2.console.enabled=true 12 13#message 14spring.messages.basename=i18n/messages,i18n/ValidationMessages 15 16# MyBatis 17mybatis.mapper-locations=classpath*:/mapper/h2/*.xml 18# Log Level 19logging.level.com.example.demo=debug

UserMapperXml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3<!-- Mapperとxmlのマッピング --> 4<mapper namespace="com.example.demo.repository.UserMapper"> 5 6 <!-- ユーザー1件登録 --> 7 <insert id="insertOne"> 8 insert into m_user 9 ( 10 user_id, 11 password, 12 user_name, 13 birthday, 14 age, 15 gender, 16 department_id, 17 role 18 ) 19 values 20 ( 21 #{userId}, 22 #{password}, 23 #{userName}, 24 #{birthday}, 25 #{age}, 26 #{gender}, 27 #{departmentId}, 28 #{role} 29 ) 30 </insert> 31</mapper> 32

###考えられること
明らかに「syntaxError」と出ているので、文法関係のエラーではないかと睨んでいるのですが、

文法、誤字脱字等は、特に見受けられませんでした。

また、他のサイトにはapplicationPropertiesの設定による影響というのもあったのですが、試しても変わらずです。

UserMapper.xmlを作成した際から、上記エラーが発生しました。

どうぞご教授お願い致します。

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

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

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

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

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

guest

回答2

0

自己解決

コメントアウトを変更するとうまく動作できました。

SQLで使用できるのは

-- anything // anything /* anything */

この3つだそうです。

投稿2021/09/25 12:59

1998Ttf

総合スコア6

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

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

0

Syntax error in SQL statement "[*]# ユーザーマスタ

# がコメントとして認められないからでは?

ドキュメント見た感じコメントとして認められるのは下記の3種類のようです。

-- anything // anything /* anything */

これはh2 DataBaseに限らないように思います。

投稿2021/09/25 09:21

編集2021/09/25 09:22
m.ts10806

総合スコア80850

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

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

1998Ttf

2021/09/25 09:53

ご指摘ありがとうございます! 最初にそれを試したのですが、変わらないな、と思ってスルー していたのですが、よくよく見たらエラー構文が全然違っていました笑 ありがとうございます。。しっかり見ます。。。
m.ts10806

2021/09/25 11:13

結局どうなったのでしょう?
1998Ttf

2021/09/25 12:58

data.sqlに関しても、コメントアウトを変更したらうまく動作できました。 非常にお恥ずかしいです。。。。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問