アットウィキロゴ

ouchi > Dustbox > ItemSelectDAO的な

アレだったんで修正しました.

  1. package ppp.dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.List;
  7.  
  8. import ppp.common.ConnectionManager;
  9. import ppp.exception.AppRuntimeException;
  10. import ppp.exception.AppSQLException;
  11. import ppp.vo.ItemVO;
  12.  
  13. public class ItemSelectDAO extends SelectNoTxDAOBase<ItemVO> {
  14.  
  15. private static final String SQL_BASE = "SELECT item.item_no AS item_no, item_name, photo_url, unit_price, size, stock, assortment.name AS assortment_name, assortment.description AS assortment_description, category.name AS category_name, (stock - sub.unavailable) AS available FROM item, stock, assortment, category, (SELECT item_no, sum(quantity) AS unavailable FROM order_detail WHERE status_code = '1' GROUP BY item_no) sub WHERE item.item_no = stock.item_no AND item.assortment = assortment.code AND item.category = category.code AND item.item_no = sub.item_no";
  16. private static final String SQL_ORDER_BY = " ORDER BY category_name, item_no";
  17.  
  18. private static final String[] WHERE_PHRASE = {
  19. " AND item_name = ?", " AND category.name = ?"
  20. };
  21.  
  22. public ItemSelectDAO(Connection conn) {
  23. super(conn);
  24. }
  25.  
  26. @Override
  27. protected String makeSql(Object[] params) throws AppSQLException {
  28.  
  29. if (params == null || params.length > 2) {
  30. throw new AppSQLException("パラメータ数が不正です");
  31. }
  32.  
  33. StringBuilder sb = new StringBuilder(SQL_BASE);
  34. System.out.println(sb.toString());
  35. for (int i = 0; i < params.length; i++) {
  36. if (params[i] != null) {
  37. sb.append(WHERE_PHRASE[i]);
  38. System.out.println(sb.toString());
  39. }
  40. }
  41. sb.append(SQL_ORDER_BY);
  42.  
  43. System.out.println(sb.toString());
  44. return sb.toString();
  45. }
  46.  
  47. @Override
  48. protected ItemVO makeRowObject(ResultSet rs) throws SQLException {
  49. ItemVO item = new ItemVO();
  50. item.setItemNo(rs.getInt("item_no"));
  51. item.setItemName(rs.getString("item_name"));
  52. item.setPhotoUrl(rs.getString("photo_url"));
  53. item.setUnitPrice(rs.getInt("unit_price"));
  54. item.setSize(rs.getString("size"));
  55. item.setStock(rs.getInt("stock"));
  56. item.setAssortmentName(rs.getString("assortment_name"));
  57. item.setAssortmentDescription(rs.getString("assortment_description"));
  58. item.setCategoryName(rs.getString("category_name"));
  59. item.setAvailableStock(rs.getInt("available"));
  60. return item;
  61. }
  62.  
  63. // Test Driver
  64. public static void main(String[] args) {
  65. Object[] params = {};
  66. List<ItemVO> list = null;
  67. ConnectionManager cm = new ConnectionManager();
  68. Connection conn = null;
  69. try {
  70. conn = cm.getConnection();
  71. ItemSelectDAO dao = new ItemSelectDAO(conn);
  72. list = dao.select(params);
  73. } catch (AppSQLException e) {
  74. throw new AppRuntimeException("ItemVOリストの取得に失敗しました", e);
  75. } finally {
  76. cm.closeConnection();
  77. }
  78. if (list != null) {
  79. System.out.println("抽出結果");
  80. for (ItemVO item : list) {
  81. System.out.println(item.toString());
  82. }
  83. }
  84. }
  85.  
  86. }
  87.  
最終更新:2013年06月10日 23:29