課題を1日考えながら試行錯誤していましたがどうしてもできないのでアドバイスをお願いします.
JavaでShopクラスとStaffクラスを持っておりこのデータをSQLで呼び出して次のようなテーブルを作っています.
ここでどのショップに誰が所属しているかをまとめて出力したいです(例→ショップA:{staff1,2,3},ショップB:{staff4,5},ショップC:{staff6}).
shop_idを指定した場合の呼び出しはこのように
{"shopId":7203,"shopName":"Toyota","staffs": [{"firstName":"Toyota","lastName":"Sakichi","staffId":99689,"shopId":7203}, {"firstName":"Toyota","lastName":"Risaburo","staffId":445,"shopId":7203}, {"firstName":"toyota","lastName":"Shoichiro","staffId":556,"shopId":7203}]} ```できるのできています.作成したテーブルのshop_idが違ったら別の集団に入れるならsetかなと思いましたがうまい実装ができません.今後Shopの追加や削除があっても問題なく動くようにしたいため,shop_idをリスト化してあらかじめ手入力する方法はなしでお願いします. 自分で作っているコードはこんな感じで ```Java package com.example.******************; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.*; public class JDBC4 { public ShopWithStaff getStaffList(){ ShopWithStaff shopWithStaff = new ShopWithStaff(); //Map allShopStaff = new HashMap(); Connection c = null; Statement stmt = null; try { Class.forName("org.postgresql.Driver"); c = DriverManager.getConnection("jdbc:postgresql://接続確認済"); stmt = c.createStatement(); String sql = "SELECT shop.shop_id, shop_name, staff_id, first_name, last_name"; sql += " FROM shop JOIN staff "; sql += "ON shop.shop_id=staff.shop_id"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { Staff staff = new Staff(); long shopId =rs.getLong("shop.shop_id"); String shopName = rs.getString("shop_name"); long staffId = rs.getLong("staff_id"); String firstName = rs.getString("first_name"); String lastName = rs.getString("last_name"); shopWithStaff.setShopId(shopId); shopWithStaff.setShopName(shopName); staff.setStaffId(staffId); staff.setShopId(shopId); staff.setFirstName(firstName); staff.setLastName(lastName); // around here some problem //shopWithStaff.addStaff(staff); // allShopStaff.put(shopId,new HashMap()); //allShopStaff.get(shopId).put(staffId,staff); } rs.close(); stmt.close(); c.close(); } catch (Exception e) { System.err.println(e); } return shopWithStaff;
また現在のクラスの中身はこんな感じになっています.
Java
1class Shop { 2 private Long shopId; 3 private String shopName;} 4 class Staff { 5 private Long staff_id; 6 private Long shop_id; 7 private String first_name; 8 private String last_name;} 9 class ShopWithStaff { 10 private Long shopId; 11 private String shopName; 12 private ArrayList<Staff> staffs =new ArrayList<>();}
アドバイスよろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。