初めて質問させていただきます。
至らない点がありましたら、どうかご指摘のほど、よろしくお願いいたします。
前提
環境
言語: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
回答1件
あなたの回答
tips
プレビュー