前提・実現したいこと
javaでユーザー詳細機能を作成して詳細ページにアクセスしたいのですがテーブルがないとなります
発生している問題・エラーメッセージ
There was an unexpected error (type=Internal Server Error, status=500). PreparedStatementCallback; bad SQL grammar [SELECT * FROM m_userWHERE user_id=?]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: テーブル "M_USERWHERE" が見つかりません Table "M_USERWHERE" not found; SQL statement: SELECT * FROM m_userWHERE user_id=? [42102-200] org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM m_userWHERE user_id=?]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: テーブル "M_USERWHERE" が見つかりません Table "M_USERWHERE" not found; SQL statement: SELECT * FROM m_userWHERE user_id=? [42102-200]
該当のソースコード
#UserDaoJdbcImpl.java package com.example.demo.jdbc; import java.sql.Date; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.demo.Repository.UserDao; import com.exmple.demo.models.User; @Repository public class UserDaoJdbcImpl implements UserDao{ @Autowired JdbcTemplate jdbc; //Userテーブルの件数を取得 @Override public int count()throws DataAccessException{ //全件取得してカウント int count = jdbc.queryForObject("SELECT COUNT(*)FROM m_user",Integer.class); return count; } //Userテーブルにデータを1件挿入 @Override public int insertOne(User user)throws DataAccessException{ int rowNumber = jdbc.update("INSERT INTO m_user(user_id," + "password," + "user_name," + "birthday," + "age," + "marriage," + "role)" + "VALUES(?,?,?,?,?,?,?)" ,user.getUserId() ,user.getPassword() ,user.getUserName() ,user.getBirthday() ,user.getAge() ,user.isMarriage() ,user.getRole()); return rowNumber; } @Override public User selectOne(String userId)throws DataAccessException{ //Userテーブルのデータを1件取得 //1レコードの内容をMapとして取得する(queryForMap) //? 動的に変化する値 Map<String,Object>map = jdbc.queryForMap("SELECT*FROM m_user"+"WHERE user_id=?",userId); //結果返却用の変数 User user = new User(); //Userインスタンスにデータセット user.setUserId((String)map.get("user_id")); user.setPassword((String)map.get("password")); user.setUserName((String)map.get("user_name")); user.setBirthday((Date)map.get("birthday")); user.setAge((Integer)map.get("age")); user.setMarriage((Boolean)map.get("marriage")); user.setRole((String)map.get("role")); return user; } //Userテーブルの全データを取得 @Override public List<User>selectMany()throws DataAccessException{ //複数行のレコードを取得する(queryForList) List<Map<String,Object>>getList = jdbc.queryForList("SELECT*FROM m_user"); //結果返却用の変数 List<User>userList = new ArrayList<>(); //取得したデータを結果返却用のListに格納 for(Map<String, Object>map:getList) { User user = new User(); //Userインスタンスにデータセット user.setUserId((String)map.get("user_id")); user.setPassword((String)map.get("password")); user.setUserName((String)map.get("user_name")); user.setBirthday((Date)map.get("birthday")); user.setAge((Integer)map.get("age")); user.setMarriage((Boolean)map.get("marriage")); user.setRole((String)map.get("role")); //結果返却用のListに追加 userList.add(user); } return userList; } //Userテーブルを1件更新 @Override public int updateOne(User user)throws DataAccessException{ return 0; } //Userテーブルを1件削除 @Override public int deleteOne(String userId)throws DataAccessException{ return 0; } //SQL取得結果をサーバーにCSV(カンマで区切られたデータ形式)で保存 @Override public void userCsvOut()throws DataAccessException{ } }
#schema.sql /*従業員テーブル */ CREATE TABLE IF NOT EXISTS employee( employee_id INT PRIMARY KEY, employee_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, marriage BOOLEAN, role VARCHAR(50) );
#application.properties server.max-http-header-size=1MB 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.h2.console.enabled=true spring.datasource.initialization-mode=always spring.datasource.schema=classpath:schema.sql spring.datasource.data=classpath:data.sql
#userDetail.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <head> <meta charset="UTF-8"></meta> </head> <body> <div th:fragment="userDetail_contents"> <div class="row"> <div class="col-sm-5"> <div class="page-header"> <h1>ユーザー詳細</h1> </div> <form method="post"th:action="@{/userDetail}"th:object="${signupForm}"> <table class="table table-bordered table-hover"> <tr> <th class="active col-sm-2">ユーザID</th> <td class="colsm-3"> <div class="form-group"> <input type="text"class="form-control" th:field="∗{userId}" readonly="readonly"/> </div> </td> </tr> <tr> <th class="active">パスワード</th> <td> <div class="formgroup"th:classappend="${#fields.hasErrors('password')}?'has-error'"> <input type="text"class="form-control"th:field="∗{password}"/> <span class="text-danger" th:if="${#fields.hasErrors('password')}" th:errors="∗{password}"> passworderror </span> </div> </td> </tr> <tr> <th class="active">ユーザ名</th> <td> <div class="formgroup"th:classappend="${#fields.hasErrors('userName')}?'has-error'"> <input type="text"class="form-control"th:field="∗{userName}"/> <span class="text-danger"th:if="${#fields.hasErrors('userName')}"th:errors="∗{userName}"> userNameerror </span> </div> </td> </tr> <tr> <th class="active">誕生日</th> <td> <div class="form-group"th:classappend="${#fields.hasErrors('birthday')}?'has-error'"> <input type="text"class="form-control"placeholder="yyyy/MM/dd"th:field="∗{birthday}"/> <span class="text-danger"th:if="${#fields.hasErrors('birthday')}"th:errors="∗{birthday}"> birthdayerror </span> </div> </td> </tr> <tr> <th class="active">年齢</th> <td> <div class="form-group"th:classappend="${#fields.hasErrors('age')}?'has-error'"> <input type="text"class="form-control"th:field="∗{age}"/> <span class="text-danger"th:if="${#fields.hasErrors('age')}"th:errors="∗{age}"> ageerror </span> </div> </td> </tr> <tr> <th class="active">結婚</th> <td> <div class="form-group"> <div th:each="item:${radioMarriage}"> <input type="radio"name="radioMarrige"th:value="${item.value}"th:text="${item.key}"th:field="∗{marriage}"> </div> <span class="textdanger"th:if="${#fields.hasErrors('marriage')}"th:errors="∗{marriage}"> marriageerror </span> </div> </td> </tr> </table> <button class="btn btn-primary btn-lg pull-right"type="submit"name="update"> 更新 </button> <button class="btn btn-danger btn-lg"type="submit"name="delete"> 削除 </button> </form> </div> </div> </div> </body> </html>
試したこと
テーブルがないってことなので
spring.datasource.initialization-mode=always
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
などかいたのですがかわりませんでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/27 12:14