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

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

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

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1220閲覧

DBから全リストを取得、表示したいけれどアプリケーション実行時にエラーになる

sad

総合スコア16

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2020/10/10 07:26

編集2020/10/10 08:16

流れとして、
1.HTMLで[リストを取得]ボタンを押す
2.ControllerクラスからModelクラスを呼び出す(引数なし)
3.ModelクラスDaoクラスを呼び出す
4.DaoクラスでDBから全リストを取得する
5.Modelクラスで、4で取得したリストをArrayList<Bean型>に順に格納し、ArrayListをControllerに返す
6.Controllerクラスで、5から返ってきたArrayListをmodel.addAttributeする
7.HTMLで、th:eachで6を取得しth:textで中身を取得
というようにしようとしています。

↓ソース
HTML:EmpList.html
Controller:MastaController.java
Model:MastaForm.java
Bean:Bean.java
Dao:Dao.java

EmpList

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>全従業員</title> 6</head> 7<body> 8 9<h2>従業員マスタメンテナンス</h2> 10 11 12 13<input type="submit" name="listget" value="リストを取得" ><br><br> 14 15<tr th:each="getlist:${getlist}"> 16<form action="/main"> 17 従業員No.<td th:text="${getlist.getNom()}"></td> 18 名前:<td th:text="${getlist.getName()}"></td> 19 <input type="hidden"th:value="${getlist.getNom()}" id="nom" name="nom"> 20<input type="submit" value="詳細" name="select"><br><br> 21</form> 22</tr> 23 24</body> 25</html>

MastaController

1package mastalist; 2 3import java.util.ArrayList; 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.stereotype.Controller; 6import org.springframework.ui.Model; 7import org.springframework.web.bind.annotation.GetMapping; 8import org.springframework.web.bind.annotation.RequestMapping; 9 10@RequestMapping("/main") 11@Controller 12public class MastaController { 13 14 @Autowired 15 private MastaForm mastaForm; 16 @GetMapping 17 public String main() { 18 return "EmpList"; 19 } 20 21 @RequestMapping(params="listget") 22 public String Emp(Model model) { 23 ArrayList<Bean> bean = mastaForm.mastaform(); 24 model.addAttribute("getlist",bean); 25 return "EmpList"; 26 } 27}

MastaForm

1package mastalist; 2 3import java.util.ArrayList; 4import java.util.List; 5import java.util.Map; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.stereotype.Service; 9 10@Service 11public class MastaForm { 12 @Autowired 13 private Dao dao; 14 15 public ArrayList<Bean> mastaform() { 16 17 List<Map<String,Object>> All = dao.selectAll(); 18 19 Bean bean = new Bean(); 20 ArrayList<Bean> aList = new ArrayList<Bean>(); 21 22 for(int i = 0; i < All.size(); i++) { 23 Map<String, Object> list = All.get(i); 24 String nom = (String) list.get("nom"); 25 String name = (String) list.get("name"); 26 String kana = (String) list.get("kana"); 27 String tell = (String) list.get("tell"); 28 String mail = (String) list.get("mail"); 29 String year = (String) list.get("year"); 30 String month = (String) list.get("month"); 31 String day = (String) list.get("day"); 32 String age = (String) list.get("age"); 33 String code = (String) list.get("code"); 34 String add1 = (String) list.get("add1"); 35 String add2 = (String) list.get("add2"); 36 37 bean.setNom(nom); 38 bean.setName(name); 39 bean.setKana(kana); 40 bean.setTell(tell); 41 bean.setMail(mail); 42 bean.setYear(year); 43 bean.setMonth(month); 44 bean.setDay(day); 45 bean.setAge(age); 46 bean.setCode(code); 47 bean.setAdd1(add1); 48 bean.setAdd2(add2); 49 50 aList.add(bean); 51 } 52 return aList; 53 } 54} 55

Bean

1package mastalist; 2 3import javax.validation.constraints.NotBlank; 4 5 6public class Bean { 7 8 @NotBlank 9 String nom; 10 @NotBlank 11 String name; 12 @NotBlank 13 String kana; 14 @NotBlank 15 private String tell; 16 @NotBlank 17 private String mail; 18 @NotBlank 19 private String year; 20 @NotBlank 21 private String month; 22 @NotBlank 23 private String day; 24 @NotBlank 25 private String age; 26 @NotBlank 27 private String code; 28 @NotBlank 29 private String add1; 30 @NotBlank 31 private String add2; 32 33 public String getNom() { 34 return nom; 35 } 36 public void setNom(String nom) { 37 this.nom = nom; 38 } 39 public String getName() { 40 return name; 41 } 42 public void setName(String name) { 43 this.name = name; 44 } 45 public String getKana() { 46 return kana; 47 } 48 public void setKana(String kana) { 49 this.kana = kana; 50 } 51 public String getTell() { 52 return tell; 53 } 54 public void setTell(String tell) { 55 this.tell = tell; 56 } 57 public String getMail() { 58 return mail; 59 } 60 public void setMail(String mail) { 61 this.mail = mail; 62 } 63 public String getYear() { 64 return year; 65 } 66 public void setYear(String year) { 67 this.year = year; 68 } 69 public String getMonth() { 70 return month; 71 } 72 public void setMonth(String month) { 73 this.month = month; 74 } 75 public String getDay() { 76 return day; 77 } 78 public void setDay(String day) { 79 this.day = day; 80 } 81 public String getAge() { 82 return age; 83 } 84 public void setAge(String age) { 85 this.age = age; 86 } 87 public String getCode() { 88 return code; 89 } 90 public void setCode(String code) { 91 this.code = code; 92 } 93 public String getAdd1() { 94 return add1; 95 } 96 public void setAdd1(String add1) { 97 this.add1 = add1; 98 } 99 public String getAdd2() { 100 return add2; 101 } 102 public void setAdd2(String add2) { 103 this.add2 = add2; 104 } 105}

Dao

1package mastalist; 2 3import java.util.List; 4import java.util.Map; 5 6import org.springframework.beans.factory.annotation.Autowired; 7import org.springframework.jdbc.core.JdbcTemplate; 8 9public class Dao { 10 11 @Autowired 12 JdbcTemplate jdbc = new JdbcTemplate(); 13 14 public List<Map<String, Object>> selectAll() { 15 List<Map<String, Object>> selectAll = jdbc.queryForList("SELECT * FROM masta_list"); 16 return selectAll; 17 } 18}

このような形で組んでいるのですが、SpringBootアプリケーションを実行しようとすると下記のようなエラーが発生して実行も出来ず、デバックもできません。どこに問題があるのかもわからず詰んでいます。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2020-10-10 16:22:05.561 ERROR 4728 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Field dao in mastalist.MastaForm required a bean of type 'mastalist.Dao' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'mastalist.Dao' in your configuration.

また、5番から先のやり方が合っているのか自信がありません。
もし時間がお許しでしたら、構文としておかしいところ等教えていただけると幸いです。


HTMLがまだ作成途中でよくわからない形ですが、無視で大丈夫です。
Attributeされたものを受け取れる形になっていればあとはなんとかします。

情報不足は随時追加いたします。

以上、お力添えをお願い致します。


追記です。
スクショがうまく行かないのでコピペです。現状このような状態です。

HTML

1従業員マスタメンテナンス 2 3 4従業員No.11 名前:山田 太郎 5 6従業員No.11 名前:山田 太郎 7 8従業員No.11 名前:山田 太郎 9 10従業員No.11 名前:山田 太郎 11 12従業員No.11 名前:山田 太郎 13 14従業員No.11 名前:山田 太郎 15

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

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

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

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

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

guest

回答1

0

ベストアンサー

DaoクラスがSpring管理下にないので、Autowiredで取得できません。

見たところJdbcTemplateを呼び出していますので、Repositoryの役割を持つので

java

1@Repository 2public class Dao { 3 4}

とすれば参照できるでしょう。

投稿2020/10/10 07:49

A-pZ

総合スコア12011

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

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

sad

2020/10/10 08:13

ありがとうございます。 できました!Beanの一部をint型に変えることで表示もできました! しかし次の問題点が、、 DBの最終行のみがデータ数の分繰り返し表示されています。(本文に追記します) これはArrayListのあたりだろうということはわかるのですが、どのように変えるといいでしょうか?
sad

2020/10/10 14:12

別途質問を作成します。ありがとうございました!
A-pZ

2020/10/11 04:07

こちら別質問の方にも回答いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問