Guest User

Untitled

a guest
Dec 5th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. import dto.AbstractUsedCar;
  13. import dto.SmallCar;
  14. import dto.Under1000Car;
  15. import dto.Under1500Car;
  16.  
  17. public class UsedCarDAO {
  18.  
  19. private static final String SELECT_ALL_SQL =
  20. "select id, 名前, 価格, 排気量 FROM 中古車マスタ";
  21.  
  22. // 全件検索メソッド
  23. public static List<AbstractUsedCar> findAll() throws SQLException
  24. {
  25. List<AbstractUsedCar> list = new ArrayList<>();
  26.  
  27. try
  28. (
  29. Connection con =
  30. DriverManager.getConnection("jdbc:oracle:thin:@xx.xx.xx.xx:1521:xxx","xxxx", "xxxx");
  31. Statement stmt = con.createStatement();
  32. ResultSet rs = stmt.executeQuery(SELECT_ALL_SQL);
  33. )
  34. {
  35. while(rs.next())
  36. {
  37. list.add(createInstance(rs));
  38. }
  39. }
  40.  
  41. return list;
  42. }
  43.  
  44. // 指定排気量以下の中古車検索
  45. public static List<AbstractUsedCar> findByDisplacement(int displacement) throws SQLException
  46. {
  47. List<AbstractUsedCar> list = new ArrayList<>();
  48.  
  49. try
  50. (
  51. Connection con =
  52. DriverManager.getConnection("jdbc:oracle:thin:@xx.xx.xx.xx:1521:xxx","xxxx", "xxxx");
  53. ResultSet rs = createStatement4Displacement(con, displacement).executeQuery();
  54. )
  55. {
  56. while(rs.next())
  57. {
  58. list.add(createInstance(rs));
  59. }
  60. }
  61.  
  62. return list;
  63. }
  64.  
  65. // 指定価格以下の中古車検索
  66. public static List<AbstractUsedCar> findByPrice(int price) throws SQLException
  67. {
  68. List<AbstractUsedCar> list = new ArrayList<>();
  69.  
  70. try
  71. (
  72. Connection con =
  73. DriverManager.getConnection("jdbc:oracle:thin:@xx.xx.xx.xx:1521:xxx","xxxx", "xxxx");
  74. ResultSet rs = createStatement4Price(con, price).executeQuery();
  75. )
  76. {
  77. while(rs.next())
  78. {
  79. list.add(createInstance(rs));
  80. }
  81. }
  82.  
  83. return list;
  84. }
  85.  
  86. // 排気量検索用PreparedStatement生成
  87. private static PreparedStatement createStatement4Displacement(Connection con, int displacement) throws SQLException
  88. {
  89. // PreparedStatement生成
  90. PreparedStatement pstmt =
  91. con.prepareStatement("SELECT ID, 名前, 価格, 排気量 FROM 中古車マスタ WHERE 排気量 <= ?");
  92. // Parameterセット
  93. pstmt.setInt(1, displacement);
  94.  
  95. return pstmt;
  96. }
  97.  
  98. // 価格検索用PreparedStatement生成
  99. private static PreparedStatement createStatement4Price(Connection con, int price) throws SQLException
  100. {
  101. // PreparedStatement生成
  102. PreparedStatement pstmt =
  103. con.prepareStatement("SELECT ID, 名前, 価格, 排気量 FROM 中古車マスタ WHERE 価格 <= ?");
  104. // Parameterセット
  105. pstmt.setInt(1, price);
  106.  
  107. return pstmt;
  108. }
  109.  
  110. // ResultSetから中古車クラスのインスタンスを生成する
  111. private static AbstractUsedCar createInstance(ResultSet rs) throws SQLException
  112. {
  113. // ID, 名前、価格、排気量取得
  114. int id = rs.getInt("ID");
  115. String name = rs.getString("名前");
  116. int price = rs.getInt("価格");
  117. int displacement = rs.getInt("排気量");
  118.  
  119. AbstractUsedCar car = null;
  120.  
  121. // 排気量に応じて、生成するインスタンスを変える
  122. if(displacement <= 660)
  123. {
  124. car = new SmallCar(id, name, price, displacement);
  125. }
  126. else if(displacement <= 1000)
  127. {
  128. car = new Under1000Car(id, name, price, displacement);
  129. }
  130. else if(displacement <= 1500)
  131. {
  132. car = new Under1500Car(id, name, price, displacement);
  133. }
  134.  
  135. return car;
  136. }
  137.  
  138.  
  139. }
Add Comment
Please, Sign In to add comment