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

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

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

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

Java

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

Thymeleaf

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

Q&A

1回答

527閲覧

国IDで表示している部分を国名に変換したい

Jburiburi

総合スコア1

MySQL

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

Java

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

Thymeleaf

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

0グッド

0クリップ

投稿2023/04/23 04:28

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • PlayersRequestクラスやPlayersDtoクラスが持つcountry_idの表示をCountriesDtoが持つidに接続してnameに変換したい(ID表示部分を国名に変えたい)

前提

ここに質問の内容を詳しく書いてください。
Thymreafで情報サイトを作っています。
試しに変換機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

コンストラクター PlayersUpdateRequest(long, String, String, String, String, String, String, String, String) は未定義です

該当のソースコード

package com.example.test1.repository; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.test1.PlayersDto; import com.example.test1.PlayersRequest; import com.example.test1.PlayersUpdateRequest; import lombok.RequiredArgsConstructor; @Repository @RequiredArgsConstructor public class PlayersRepository { private final JdbcTemplate jdbcTemplate; public List<PlayersDto> getAll() { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where delete_date is null"; List<Map<String, Object>> playersList = jdbcTemplate.queryForList(sql); List<PlayersDto> list = new ArrayList<>(); // LocalDatetime to Date for (Map<String, Object> players : playersList) { list.add(new PlayersDto( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), (Date) players.get("birth"), (String) players.get("height"), (String) players.get("weight"), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("create_date"), ZoneId.systemDefault()).toInstant()), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("update_date"), ZoneId.systemDefault()).toInstant()), players.get("delete_date") != null ? Date.from(ZonedDateTime.of((LocalDateTime ) players.get("delete_date"), ZoneId.systemDefault()).toInstant()) : null )); } return list; } public PlayersDto findById(long id) { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where id = ?"; Map<String, Object> players = jdbcTemplate.queryForMap(sql, id); return new PlayersDto( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), (Date) players.get("birth"), (String) players.get("height"), (String) players.get("weight"), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("create_date"), ZoneId.systemDefault()).toInstant()), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("update_date"), ZoneId.systemDefault()).toInstant()), players.get("delete_date") != null ? Date.from(ZonedDateTime.of((LocalDateTime ) players.get("delete_date"), ZoneId.systemDefault()).toInstant()) : null ); } static public final String DATE_PATTERN ="yyyy-MM-dd"; public PlayersUpdateRequest updateById(long id) { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where id = ?"; Map<String, Object> players = jdbcTemplate.queryForMap(sql, id); SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN); return new PlayersUpdateRequest( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), dateFormat.format((Date)players.get("birth")), (String) players.get("height"), (String) players.get("weight") ); } //新規登録 public void createPlayers(PlayersRequest ins) { jdbcTemplate.update( "INSERT INTO players" + "(country_id" + ",uniform_num" +",position" +",name" +",club" +",birth" +",height" +",weight" +",update_date" +",create_date)" +"values" +"(?,?,?,?,?,?,?,?,?,?)", ins.getCountry_id() ,ins.getUniform_num() ,ins.getPosition() ,ins.getName() ,ins.getClub() ,ins.getBirth() ,ins.getHeight() ,ins.getWeight() ,new Date() ,new Date()); } //更新(編集) public void updatePlayers(PlayersUpdateRequest usr) { jdbcTemplate.update( "update players " + "set country_id = ?" + ",uniform_num = ?" + ",position = ?" + ",name = ?" + ",club = ?" + ",birth = ?" + ",height = ?" + ",weight = ?" +",update_date = ?" + " where id = ?;", usr.getCountry_id() ,usr.getUniform_num() ,usr.getPosition() ,usr.getName() ,usr.getClub() ,usr.getBirth() ,usr.getHeight() ,usr.getWeight() ,new Date() ,usr.getId()); } //削除 public void deletePlayers(long id) { jdbcTemplate.update( "update players set delete_date = ? where id = ?;", new Date() ,id); } }

試したこと

最後の文を追加しました。

package

1 2import java.io.Serializable; 3 4import javax.validation.constraints.NotEmpty; 5import javax.validation.constraints.Pattern; 6import javax.validation.constraints.Size; 7 8import lombok.Data; 9/** 10 * 国情報 リクエストデータ 11 */ 12@Data 13public class PlayersRequest implements Serializable { 14 private long id; 15 private Countries country; 16 17 /*国id*/ 18 @Size(max = 3, message = "国IDは3桁以内で入力してください") 19 private String country_id; 20 21 /*ユニフォーム*/ 22 @Size(max = 3, message = "ユニフォーム番号は大文字かつ半角数字3文字以内で入力してください") 23 private String uniform_num; 24 25 /*ポジション*/ 26 @Size(max =2, message = "ポジションは大文字かつ2文字以内で入力してください") 27 @Pattern(regexp = "^[A-Z ]*$", message = "ポジションは大文字かつ2文字以内で入力してください") 28 private String position; 29 30 /*名前*/ 31 @Size(max = 50, message = "名前は50字以内で入力してください") 32 private String name; 33 34 /*所属クラブ*/ 35 @Size(max = 50, message = "所属クラブは50字以内で入力してください") 36 private String club ; 37 38 /*誕生日*/ 39 @NotEmpty(message = "誕生日を入力してください") 40 @Pattern 41 (regexp = "\\d{4}-\\d{2}-\\d{2}", message = "誕生日は西暦-月-日で入力してください") 42 private String birth; 43 44 /*身長*/ 45 @Size(max = 3, message = "身長は整数3桁以内で入力してください") 46 private String height; 47 48 /*体重*/ 49 @Size(max = 3, message = "体重は整数3桁以内で入力してください") 50 private String weight; 51 52 53 ///以下を追加した///(最初の private Countries country;も) 54 /*country_idをCountriesのnameに変換するメソッド*/ 55 public void convertCountryIdToName(Countries country) { 56 this.country = country; 57 this.country_id = country.getName(); 58 } 59}

補足情報(FW/ツールのバージョンなど)

eclipse2021 Thymleaf

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

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

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

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

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

guest

回答1

0

PlayersUpdateRequest クラスに

java

1 return new PlayersUpdateRequest( 2 (long) players.get("id"), 3 (String) players.get("country_id"), 4 (String) players.get("uniform_num"), 5 (String) players.get("position"), 6 (String) players.get("name"), 7 (String) players.get("club"), 8 dateFormat.format((Date)players.get("birth")), 9 (String) players.get("height"), 10 (String) players.get("weight") 11 );

のためのコンストラクタが無いということでしょう。

投稿2023/04/23 04:59

jimbe

総合スコア12632

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

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

Jburiburi

2023/04/23 05:02

どう置き換えればよろしいですか?
jimbe

2023/04/23 05:04

置き換えと言われましても…こちらには PlayersUpdateRequest クラスがどんなのか全く見えていません。
Jburiburi

2023/04/23 05:40

乗せたものと勘違いしており失礼しました。 こちらになります。 package com.example.test1; import java.io.Serializable; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Data; /** * 国情報 リクエストデータ */ @Data @AllArgsConstructor public class PlayersUpdateRequest implements Serializable { private long id; private Countries country; /*国id*/ @NotEmpty(message = "国IDを入力してください") @Size(max = 3, message = "国IDは3桁以内で入力してください") private String country_id; /*ユニフォーム*/ @Size(max = 3, message = "ユニフォーム番号は大文字かつ半角数字3文字以内で入力してください") private String uniform_num; /*ポジション*/ @Size(max = 2, message = "ポジションは大文字かつ2文字以内で入力してください") //@Pattern(regexp = "^[A-Z ]*$", message = "ポジションは大文字かつ2文字以内で入力してください") private String position; /*名前*/ @Size(max = 50, message = "名前は50字以内で入力してください") private String name; /*所属クラブ*/ @Size(max = 50, message = "所属クラブは50字以内で入力してください") private String club ; /*誕生日*/ @NotEmpty(message = "誕生日を入力してください") @Pattern (regexp = "\\d{4}-\\d{2}-\\d{2}", message = "誕生日は西暦-月-日で入力してください") private String birth; /*身長*/ @Size(max = 3, message = "身長は整数3桁以内で入力してください") private String height; /*体重*/ @Size(max = 3, message = "体重は整数3桁以内で入力してください") private String weight; /*country_idをCountriesのnameに変換するメソッド*/ public void convertCountryIdToName(Countries country) { this.country = country; this.country_id = country.getName(); } }
jimbe

2023/04/23 07:56

コードは質問を編集して追加して頂くほうが良いです。 @AllArgsConstructor を使うのなら long の次に Countries の引数を指定しなくてはいけないのでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問