
#現在の課題
現在DAOクラスにて
public BookingInfoForm queryBookingNumber(int num) { final String sql = "SELECT * FROM booking_info where booking_number = " + num; return jt.queryForObject(sql, BookingInfoForm.class); }
このような形で予約番号を元に1件の行を取ってくるというSQL文を発行しているのですが
エラーコード
2019-05-22 13:48:30.080 ERROR 7828 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 9] with root cause org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 9 at org.springframework.jdbc.core.SingleColumnRowMapper.mapRow(SingleColumnRowMapper.java:110) ~[spring-jdbc-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:94) ~[spring-jdbc-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:61) ~[spring-jdbc-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:439) ~[spring-jdbc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
エラー内容は、取得するのが1件なのに対しカラム数である9件返ってきているというものです。
BookingInfoFormというフォームクラスにカラム分のアクセサメソッドは用意しているのですが
JdbcTemplateの仕様上1件までの値しか受け取れないのということでsetする方法がわかりません。
また0件の値が返ってきた場合も実行時エラーではなく例外処理を実装したいのですが、これといった記事を
見つけることができませんでした。
#試してみたこと
queryForObjectを使用して実装してみようと考えたのですが、そちらでも結果的に受け取った値を
Listに格納することができず、Objectの形で実装することにいたしました。
#補足情報
Viewから予約番号を入力→Controllerで値を受け取り、Serviceクラスでビジネスロジックを実行→
DAOクラスでDBアクセスを行い値を取得し戻り値で結果を返す→受け取った値をサービスクラスを経由しControllerへ→
Viewに値を表示という流れの実装になっています。
DAOのDBアクセス部分以外の実装は問題なく動いています。


回答1件
あなたの回答
tips
プレビュー