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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

MyBatis

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

Q&A

解決済

1回答

2355閲覧

EclipseでMyBatisを使用できるようにしたい

hirahira_n

総合スコア15

MySQL

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

MyBatis

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

0グッド

0クリップ

投稿2022/08/08 15:51

編集2022/08/23 02:19

初めて質問させていただきます。
至らない点がありましたら、どうかご指摘のほど、よろしくお願いいたします。

前提

環境
言語:Java
Eclipse(Version:2020-12 (4.18.0))
DB:MySQL8.0(Version:8.0.27)

実現したいこと

  •  MyBatisを使えるようにしたい

application.propertiesのDB接続の、ユーザーネームとパスワードには問題ありません

エラー内容

Error parsing Mapper XML. The XML location is 'com/example/todo/domain/repository/UserMapper.xml'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'UserEntity'. Cause: java.lang.ClassNotFoundException: Cannot find class: UserEntity

イメージ説明

該当のソースコード

application.properties

1## MySQLの接続文字列 2spring.datasource.url=jdbc:mysql://localhost:3306/todo_db?characterEncoding=UTF-8 3## アクセスするためのユーザ名 4spring.datasource.username= 5## MySQLにアクセスするパスワード 6spring.datasource.password= 7## JDBCドライバのクラス名 8spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 9## DBの初期化を実行する 10## spring.sql.init.mode = always 11 12## アプリケーション起動時にEntityに対応するテーブルがなければ作成 13## spring.jpa.hibernate.ddl-auto=update 14 15## 以下、SpringBoot起動時にSQL文を書いたスクリプトを実行する場合のみ記述 16 17## スクリプトを実行する場合はalwaysを指定 18## spring.sql.init.mode=always 19 20## SQL文を記述したファイルのパスを指定(DDL:テーブル作成などの実行用) 21## spring.sql.init.schema-locations=classpath:database/schema.sql 22 23## SQL文を記述したファイルのパスを指定(DML:レコード追加などの実行用) 24## spring.sql.init.data-locations=classpath:database/data.sql 25 26## SQL文を書いたファイルの文字エンコーディングを指定 27## spring.sql.init.encoding=utf-8 28

Java(UserMapper.xml)

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6<mapper namespace="com.example.todo.domain.repository.UserMapper"> 7 8 <select id = "findOne" parameterType="UserEntity"> 9 SELECT 10 * 11 FROM 12 users 13 WHERE 14 mailAddress = #{mailAddress} 15 </select> 16</mapper> 17

UserEntity.java

1package com.example.todo.app.entity; 2 3import java.time.LocalDate; 4 5import javax.persistence.Column; 6import javax.persistence.Entity; 7import javax.persistence.GeneratedValue; 8import javax.persistence.GenerationType; 9import javax.persistence.Id; 10import javax.persistence.Table; 11 12import lombok.Getter; 13import lombok.Setter; 14 15@Setter 16@Getter 17@Entity 18@Table(name = "users") 19public class UserEntity { 20 21 @Id 22 @GeneratedValue(strategy = GenerationType.IDENTITY) 23 @Column(name = "user_id") 24 private int userId; 25 26 @Column(name = "for_search_id") 27 private String forSearchId; 28 29 @Column 30 private String password; 31 32 @Column(name = "user_kbn") 33 private String userKbn; 34 35 @Column(name = "user_name") 36 private String userName; 37 38 @Column(name = "postal_code") 39 private String postalCode; 40 41 @Column 42 private String address; 43 44 @Column(name = "job_code") 45 private String jobCode; 46 47 @Column(name = "mail_address") 48 private String mailAddress; 49 50 @Column(name = "is_searchable") 51 private boolean isSearchable; 52 53 @Column(name = "delete_flg") 54 private String deleteFlg; 55 56 @Column(name = "created_at") 57 private LocalDate createdAt; 58 59 @Column(name = "updated_at") 60 private LocalDate updatedAt; 61 62 public UserEntity() { 63 // TODO 自動生成されたコンストラクター・スタブ 64 } 65 66} 67 68 69

UserMapper.java

1package com.example.todo.domain.repository; 2 3import java.util.List; 4 5import org.apache.ibatis.annotations.Mapper; 6 7import com.example.todo.app.entity.UserEntity; 8 9@Mapper 10public interface UserMapper { 11 12 List<UserEntity> findOne(String mailAddress); 13 14} 15 16

AddAccountService.java

1package com.example.todo.domain.service; 2 3import java.util.List; 4 5import javax.servlet.http.HttpSession; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.stereotype.Service; 9 10import com.example.todo.app.entity.UserEntity; 11import com.example.todo.app.form.UserForm; 12import com.example.todo.domain.repository.UserMapper; 13 14@Service 15public class AddAccountService implements IAddAccount { 16 17 @Autowired 18 HttpSession session; 19 20 @Autowired 21 UserMapper userMapper; 22 23 @Override 24 public void addAccoount() { 25 26 } 27 28// 新規会員登録処理 29// 入力チェックはFormクラスのアノテーションで対応 30 public boolean setAccountInfo(UserForm user) { 31 32// メールアドレス既存チェック(存在していればfalse) 33 34 List<UserEntity> userList = userMapper.findOne(user.getMailAddress()); 35 36 if (userList.size() > 0) { 37 return false; 38 } 39 40 return true; 41 42 } 43 44} 45 46

試したこと

ディレクトリ構造が悪いのかと思い、ファイルの位置を変えてみたり、パスを確認したりしたのですが、どうにもうまくいきません

├─java
│ └─com
│ └─example
│ └─todo
│ ├─app
│ │ ├─constant
│ │ ├─controller
│ │ ├─entity
│ │ └─form
│ └─domain
│ ├─repository
│ ├─service
│ └─util
└─resources
├─com
│ └─example
│ └─todo
│ └─domain
│ └─repository
├─repository
├─static
│ ├─css
│ └─js
└─templates

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

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

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

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

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

m.ts10806

2022/08/09 01:59

「補足情報」はあくまで「環境情報やツールなど」を記載するものであいさつを書くものではないと思います。 質問テンプレートにも↓のようにあったかと思います。 (FW/ツールのバージョンなど)
hirahira_n

2022/08/15 14:18 編集

Luiceさん ありがとうございます 理解に努めます m.ts10806さん ありがとうございます 修正いたします
guest

回答1

0

自己解決

application.properties

1## MySQLの接続文字列 2spring.datasource.url=jdbc:mysql://localhost:3306/todo_db?characterEncoding=UTF-8 3## アクセスするためのユーザ名 4spring.datasource.username=test_user 5## MySQLにアクセスするパスワード 6spring.datasource.password=test 7## JDBCドライバのクラス名 8spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 9## DBの初期化を実行する 10## spring.sql.init.mode = always 11 12## アプリケーション起動時にEntityに対応するテーブルがなければ作成 13## spring.jpa.hibernate.ddl-auto=update 14 15## 以下、SpringBoot起動時にSQL文を書いたスクリプトを実行する場合のみ記述 16 17## スクリプトを実行する場合はalwaysを指定 18## spring.sql.init.mode=always 19 20## SQL文を記述したファイルのパスを指定(DDL:テーブル作成などの実行用) 21## spring.sql.init.schema-locations=classpath:database/schema.sql 22 23## SQL文を記述したファイルのパスを指定(DML:レコード追加などの実行用) 24## spring.sql.init.data-locations=classpath:database/data.sql 25 26## SQL文を書いたファイルの文字エンコーディングを指定 27## spring.sql.init.encoding=utf-8 28 29mybatis.configuration.map-underscore-to-camel-case=true 30mybatis.type-aliases-package=com.example.todo.app.entity 31

UserMapper.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6<mapper namespace="com.example.todo.domain.repository.UserMapper"> 7 8 <select id = "findOne" parameterType="UserEntity"> 9 SELECT 10 * 11 FROM 12 users 13 WHERE 14 mailAddress = #{mailAddress} 15 </select> 16</mapper>

下記、二か所を変更しました

①application.properties
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-aliases-package=com.example.todo.app.entity

②UserMapper.xml
<mapper namespace="com.example.todo.domain.repository.UserMapper">

おそらく、コンフギュレーションプロパティに関する記述が足りなかったものだと思われます

まだ勉強中のため、URLだけ記載します

ありがとうございました

投稿2022/08/22 17:19

hirahira_n

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問