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

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

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

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

Spring

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

MyBatis

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

解決済

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

1998Ttf
1998Ttf

総合スコア6

Java

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

Spring

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

MyBatis

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

2回答

0評価

0クリップ

849閲覧

投稿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

CREATE TABLE IF NOT EXISTS employee (id VARCHAR(50) PRIMARY KEY, name VARCHAR(50), age INT); # ユーザーマスタ 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)); # 部署マスタ CREATE TABLE IF NOT EXISTS m_department (department_id INT PRIMARY KEY, department_name VARCHAR(50)); # 給料テーブル CREATE TABLE IF NOT EXISTS t_salary (user_id VARCHAR(50), year_monthes VARCHAR(50), salary INT, PRIMARY KEY(user_id, year_monthes));

dataSql

INSERT INTO employee (id, name, age) VALUES('1', 'Tom', 30); # ユーザーマスタ INSERT INTO m_user ( user_id, password, user_name, birthday, age, gender, department_id, role ) VALUES ( 'system@co.jp', 'password', 'システム管理者', '2000-01-01', 21, 1, 1, 'ROLE_ADMIN' ), ( 'user@co.jp', 'password', 'ユーザー1', '2000-01-01', 21, 2, 2, 'ROLE_GENERAL' ); # 部署マスタ INSERT INTO m_department ( department_id, department_name ) VALUES (1, 'システム管理部'), (2, '営業部'); # 給料テーブル INSERT INTO t_salay ( user_id, year_monthes, salay ) VALUES ('user@co.jp', '2020/11', 280000), ('user@co.jp', '2020/12', 290000), ('user@co.jp', '2021/01', 300000);

applicationProperties

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.datasource.sql-script-encoding=UTF-8 spring.datasource.initialize=true spring.datasource.schema=classpath:schema.sql spring.datasource.data=classpath:data.sql # H2DB spring.h2.console.enabled=true #message spring.messages.basename=i18n/messages,i18n/ValidationMessages # MyBatis mybatis.mapper-locations=classpath*:/mapper/h2/*.xml # Log Level logging.level.com.example.demo=debug

UserMapperXml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- Mapperとxmlのマッピング --> <mapper namespace="com.example.demo.repository.UserMapper"> <!-- ユーザー1件登録 --> <insert id="insertOne"> insert into m_user ( user_id, password, user_name, birthday, age, gender, department_id, role ) values ( #{userId}, #{password}, #{userName}, #{birthday}, #{age}, #{gender}, #{departmentId}, #{role} ) </insert> </mapper>

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

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

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

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Spring

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

MyBatis

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