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

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

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

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

Java

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

Thymeleaf

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

HTML

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

Spring Boot

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

Q&A

解決済

2回答

7837閲覧

DBから取得したList<map<String,Object>>型のデータをViewに渡したい

sad

総合スコア16

MySQL

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

Java

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

Thymeleaf

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

HTML

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

Spring Boot

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

1グッド

0クリップ

投稿2020/10/10 14:49

編集2020/10/11 03:23

流れとして、
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

HTML

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<form action="main"> 13<input type="submit" name="listget" value="リストを取得" ><br><br> 14</form> 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>

JAVA

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

JAVA

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

JAVA

1package mastalist; 2 3import javax.validation.constraints.NotBlank; 4 5 6public class Bean { 7 8 @NotBlank 9 int 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 int year; 20 @NotBlank 21 private int month; 22 @NotBlank 23 private int day; 24 @NotBlank 25 private int age; 26 @NotBlank 27 private int code; 28 @NotBlank 29 private String add1; 30 @NotBlank 31 private String add2; 32 33 public int getNom() { 34 return nom; 35 } 36 public void setNom(int 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 int getYear() { 64 return year; 65 } 66 public void setYear(int year) { 67 this.year = year; 68 } 69 public int getMonth() { 70 return month; 71 } 72 public void setMonth(int month) { 73 this.month = month; 74 } 75 public int getDay() { 76 return day; 77 } 78 public void setDay(int day) { 79 this.day = day; 80 } 81 public int getAge() { 82 return age; 83 } 84 public void setAge(int age) { 85 this.age = age; 86 } 87 public int getCode() { 88 return code; 89 } 90 public void setCode(int 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}

JAVA

1import java.util.List; 2import java.util.Map; 3 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.jdbc.core.JdbcTemplate; 6import org.springframework.stereotype.Repository; 7 8@Repository 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 System.out.println(selectAll); 17 return selectAll; 18 } 19}

しかし実行すると、下画像のようにDBの最後の行のみがデータの数分(今は6件)表示されます。(従業員No.は4,5,8,9,10,11が登録されています)
イメージ説明
これをちゃんと順番にデータ通り表示したいです。
どうかお力添えをお願い致します。


試行錯誤の履歴:
・HTMLの受け取り方→th:eachでリストマップ取得、そこからth:withでマップを取得、${map.key}の形で取り出そうとしたがエラー。

・Controllerクラスで取得した値をSystem.out.printlnで確認すると、データの最終行のみが6件入っていることを確認。しかしModelクラスでは問題なく全データを取得出来ていた。
→ということはmodelクラスのaListへの値の格納がおかしい?

・Modelクラスの変数Allから取得したlistをさらにfor文で回して値を処理してみようとするも何をしているのかわからず沼にハマる。


yyyyssss👍を押しています

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

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

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

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

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

m.ts10806

2020/10/10 23:45

コードブロックの冒頭はファイル名ではなく言語名です。 ```言語名 言語名に変更しファイル名はブロック外にしてください。
sad

2020/10/11 03:24

失礼いたしました。修正させていただきました。
guest

回答2

0

変数名の付け方にいくつか危ういところがありましたので、こちらで変えています。

java

1@Service 2public class SampleService { 3 public List<Bean> mastaform() { 4 5 List<Map<String, Object>> all = dao.selectAll(); 6 7 return all.stream().map(record -> { 8 Bean bean = new Bean(); 9 bean.setNom((Integer) record.get("nom")); 10 bean.setName((String) record.get("name")); 11 // 中略 12 return bean; 13 }).collect(Collectors.toList()); 14 } 15}

実際に行いたいのはMap<String, Object>をBeanに詰め替えることなので、上記ソースコード内の record -> { } の中で実装している内容をメソッドに切り出し、メソッドを呼び出す方法がよりシンプルでわかりやすいコードになるかと思います。

java

1public List<Bean> mastaform() { 2 3 List<Map<String, Object>> all = dao.selectAll(); 4 5 return all.stream().map(SampleService::convert).collect(Collectors.toList()); 6} 7 8static Bean convert(Map<String, Object> record) { 9 Bean bean = new Bean(); 10 bean.setNom((Integer) record.get("nom")); 11 bean.setName((String) record.get("name")); 12 // 中略 13 return bean; 14}

投稿2020/10/11 04:06

A-pZ

総合スコア12011

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

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

sad

2020/10/11 04:17

おぉ…知らないことだらけです…ありがとうございます。 シンプルになりすぎてまだ理解しきれてない自分の頭では流れを追うことすら難しく…参考にさせていただきます。 これからも勉強を重ねて、さっとこのような形に書き上げられるように頑張ります!
guest

0

ベストアンサー

→ということはmodelクラスのaListへの値の格納がおかしい?

beanという変数は、毎回newする必要があるかと思います。

java

1 for(int i = 0; i < All.size(); i++) { 2 Map<String, Object> list = All.get(i); 3 int nom =(int) list.get("nom"); 4 String name = (String) list.get("name"); 5 String kana = (String) list.get("kana"); 6 String tell = (String) list.get("tell"); 7 String mail = (String) list.get("mail"); 8 int year = (int) list.get("year"); 9 int month = (int) list.get("month"); 10 int day = (int) list.get("day"); 11 int age = (int) list.get("age"); 12 int code = (int) list.get("code"); 13 String add1 = (String) list.get("add1"); 14 String add2 = (String) list.get("add2"); 15 16 Bean bean = new Bean();//こことか 17 18 bean.setNom(nom); 19 bean.setName(name); 20 bean.setKana(kana); 21 bean.setTell(tell); 22 bean.setMail(mail); 23 bean.setYear(year); 24 bean.setMonth(month); 25 bean.setDay(day); 26 bean.setAge(age); 27 bean.setCode(code); 28 bean.setAdd1(add1); 29 bean.setAdd2(add2); 30 31 aList.add(bean); 32 33 } 34 35 36

投稿2020/10/10 23:56

m.ts10806

総合スコア80852

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

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

sad

2020/10/11 03:28

無事正常に動作しました! newするところが間違っていたのですね、、 いつもありがとうございます。すごく助かっています。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問