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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

4回答

13204閲覧

DTOから取得した情報をArrayListのDTO型で格納したい

ypk

総合スコア80

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

1クリップ

投稿2020/08/24 12:23

こんにちは。現在Javaの学習をしているものです。

getメソッドで取得した情報をDTOにセットしArrayListを用いて取り出す方法が分からず苦戦しています。
どなたか気になる箇所などございましたらご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

###実現したいこと

ArrayList<GenreDTO> maingenreList = bn.MainGenresAll();

のようにDTO型のArrayListでDTOをArrayListに格納した後、格納したDTOからmaingenreidとmaingenrenameを取り出す。
取り出したのちにその情報をDTOにセットし、allgenreListにDTO型として格納しsetAtributeメソッドを用いてセットしたいと考えています。

分からないこと

下記2つの処理をどうやって記述してあげたらよいのかがいまいちよくわかりません、、、

//取得したmaingenreidとmaingenrenameをDTOにセットする
// genreListデータをapplicationスコープで保存 context.setAttribute("allgenreList", allgenreList);

###私の現在のソースコード

import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import common.LoggerTester; import dao.GenreDAO; import dto.GenreDTO; public class InitializationListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { ServletContext context = event.getServletContext(); // ログの出力 LoggerTester lt = new LoggerTester(); lt.outActionLog("InitializationListener.java", "処理開始"); GenreDAO bn = new GenreDAO(); ArrayList<GenreDTO> maingenreList = bn.MainGenresAll(); if (maingenreList != null) { for (int i = 0; i < maingenreList.size(); ++i) { GerneDTO genreInfo = maingenreList.get(i); genreInfo.get(String_maingenreid); genreInfo.get(String_maingenrename);          //取得したmaingenreidとmaingenrenameをDTOにセットする } }          //DTOにセットしたmaingenreidとmaingenrenameをallgenreListにDTO型として格納する      ArrayList<GenreDTO> allgenreList = // genreListデータをapplicationスコープで保存 context.setAttribute("allgenreList", allgenreList); } public void contextDestoryed(ServletContextEvent event) { ServletContext context = event.getServletContext(); context.removeAttribute("allgenreList"); // 削除処理 } }

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

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

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

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

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

guest

回答4

0

MyWawaVisit With the money you save from using this coupon in the middle of the morning, you may buy a second snack.

投稿2023/09/13 10:52

MyWawaVisit

総合スコア2

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

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

0

A superior one for both supermarket purchases and daily requirements. Everything you require, whether tiny or large, kitchen or bathroom related, may be purchased under one roof.
visit here Talktostopandshop Survey

投稿2023/09/13 10:02

sweetjulie542

総合スコア2

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

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

0

格納したDTOからmaingenreidとmaingenrenameを取り出す。 4

mcdvoice

投稿2023/07/06 06:50

GrayPatho

総合スコア2

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

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

0

ベストアンサー

DTO型のArrayListでDTOをArrayListに格納した後、格納したDTOからmaingenreidとmaingenrenameを取り出す。

このDTOと

取り出したのちにその情報をDTOにセットし、allgenreListにDTO型として格納しsetAtributeメソッドを用いてセットしたいと考えています。

このDTOは別の型ではないかと。

java

1GerneDTO genreInfo = maingenreList.get(i); 2 3genreInfo.get(String_maingenreid); 4genreInfo.get(String_maingenrename);

この部分がまだ実装完了されていないんですかね。

ここからは私の予想ですが、GenreDTOは、DAOからの結果を反映するもので、そこからメインジャンルのIDと名前だけを扱う別のDTO(MainGenreDTOとします)に置き換えたものを格納すればよいでしょうか。

java

1public class MainGenreDTO { 2 private String id; 3 private String name; 4 5 public MainGenreDTO(String id, String name) { 6 this.id = id; 7 this.name = name; 8 } 9 10 public String getId() { 11 return id; 12 } 13 public void setId(String id) { 14 this.id = id; 15 } 16 public String getName() { 17 return name; 18 } 19 public void setName(String name) { 20 this.name = name; 21 } 22}

そうした上で、GenreDTOの実装が書かれていませんのでこちらも予想ですが、

java

1ArrayList<MainGenreDTO> allGenreList = new ArrayList<>(); 2if (mainGenreList != null) { 3 for (int i = 0; i < mainGenreList.size(); ++i) { 4 5 GenreDTO genreInfo = mainGenreList.get(i); 6 7 MainGenreDTO mainGenre = new MainGenreDTO(genreInfo.getId(), genreInfo.getName()); 8 9 allGenreList.add(mainGenre); 10 } 11}

のようになるでしょうか。

※以下のようにも記述できます。

java

1List<MainGenreDTO> mainGenres = 2 allGenreList.stream() 3 .map(genre -> new MainGenreDTO(genre.getId(), genre.getName())) 4 .collect(Collectors.toList());

投稿2020/08/24 22:46

A-pZ

総合スコア12011

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

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

ypk

2020/08/25 00:34

ご丁寧にありがとうございます。DTOの記述はそのようになる予定です! GenreDTO genreInfo = mainGenreList.get(i); にてDTOを一つ取り出し MainGenreDTO mainGenre = new MainGenreDTO(genreInfo.getId(), genreInfo.getName()); と記述してMainGenreDTOのインスタンスを生成し先ほどDTOからゲットしたIDとNameを引数にセット allGenreList.add(mainGenre); にてDTO型(=IDとNameをセットできる保存庫)で格納する という認識でしょうか。どうぞよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問