Java
1 2List<aaaEntity> list = new ArrayList<aaaEntity>(); 3while (result.next()) { 4 aaaEntity entity = new aaaEntity(); 5 6 entity.setHoge(result.getString("hoge")); 7 entity.setVar(result.geString("var")); 8 entity.setDate(result.getString("date")); 9 entity.setCost(result.getString("cost")); 10 list.add(entity); 11 } 12 13
データ(hoge,var,date,cost)の入ったリストを作る上記のようなものがあるのですが、
実際のソースコードの仕組み上whileを二つに分けて作ったので、最終的に纏めあげるようなことをして、上記と同じリストにしたいのですが
下記のように、list.addを使用するとdateとcostだけの独立した要素が挿入されてしまうのでどうすればよいか分かりません。
ご教示のほどお願いします。よろしくお願いします。
java
1 2String sql = createSql(); 3PreparedStatement stmt = null; 4ResultSet result = null; 5 6String sql2 = createSql2(); 7PreparedStatement stmt2 = null; 8ResultSet result2 = null; 9try{ 10 stmt = getConn().prepareStatement(sql); 11 stmt.setString(1, aiu); 12 result = stmt.executeQuery(); 13 14 15 stmt2 = getConn().prepareStatement(sql2); 16 stmt2.setString(1, aiu); 17 result2 = stmt.executeQuery(); 18 19 20 while (result.next()) { 21 aaaEntity entity = new aaaEntity(); 22 23 entity.setHoge(result.getString("hoge")); 24 entity.setVar(result.geString("var")); 25 list.add(entity); 26 } 27 int row = 0; 28 while (result2.next()) { 29 aaaEntity entity = new aaaEntity(); 30 31 entity.setDate(result2.getString("date")); 32 entity.setCost(result2.getString("cost")); 33 list.add(row, entity); 34 row++; 35 } 36} 37 38private String createSql() { 39 StringBuilder sb = new StringBuilder(); 40 41 sb.append(" SELECT"); 42 sb.append(" hoge"); 43 sb.append(" ,var"); 44 sb.append(" ,date"); 45 sb.append(" FROM"); 46 sb.append(" testtable"); 47 sb.append(" WHERE date = ?"); 48 return sb.toString(); 49} 50private String createSql2() { 51 StringBuilder sb = new StringBuilder(); 52 53 sb.append(" SELECT"); 54 sb.append(" date"); 55 sb.append(" ,cost"); 56 sb.append(" FROM"); 57 sb.append(" testtable2"); 58 sb.append(" WHERE date = ?"); 59 return sb.toString(); 60}
補足--
createSqlとcreateSql2を結合したら多分こんな感じです。
Java
1private String createSql() { 2 StringBuilder sb = new StringBuilder(); 3 4 sb.append(" SELECT"); 5 sb.append(" ttbl1.hoge"); 6 sb.append(" ,ttbl1.var"); 7 sb.append(" ,ttbl2.date"); 8 sb.append(" ,ttbl2.cost"); 9 sb.append(" FROM"); 10 11 sb.append(" (SELECT"); 12 sb.append(" hoge"); 13 sb.append(" ,var"); 14 sb.append(" ,date"); 15 sb.append(" FROM"); 16 sb.append(" testtable"); 17 sb.append(" WHERE date = ?"); 18 sb.append(" ) ttbl1"); 19 20 sb.append(" INNER JOIN"); 21 sb.append(" (SELECT"); 22 sb.append(" date"); 23 sb.append(" ,cost"); 24 sb.append(" FROM"); 25 sb.append(" testtable2"); 26 sb.append(" WHERE date = ?"); 27 sb.append(" ) ttbl2"); 28 29 sb.append(" (ttbl1.date = ttbl2.date) "); 30 31 return sb.toString(); 32}
回答4件
あなたの回答
tips
プレビュー