ProductMySQLDAO.java
上传用户:lsj999sz
上传日期:2022-06-15
资源大小:4717k
文件大小:8k
源码类别:

ICQ/即时通讯

开发平台:

Java

  1. package com.bjsxt.shopping.product;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. import java.sql.Timestamp;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import com.bjsxt.shopping.category.Category;
  11. import com.bjsxt.shopping.util.DB;
  12. public class ProductMySQLDAO implements ProductDAO {
  13. public void add(Product p) {
  14. Connection conn = null;
  15. PreparedStatement pstmt = null;
  16. try {
  17. conn = DB.getConn();
  18. String sql = "insert into product values (null, ?, ?, ?, ?, ?, ?)";
  19. pstmt = DB.prepare(conn, sql);
  20. pstmt.setString(1, p.getName());
  21. pstmt.setString(2, p.getDescr());
  22. pstmt.setDouble(3, p.getNormalPrice());
  23. pstmt.setDouble(4, p.getMemberPrice());
  24. pstmt.setTimestamp(5, new Timestamp(p.getPdate().getTime()));
  25. pstmt.setInt(6, p.getCategoryId());
  26. pstmt.executeUpdate();
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. } finally {
  30. DB.close(pstmt);
  31. DB.close(conn);
  32. }
  33. }
  34. public void delete(int id) {
  35. Connection conn = null;
  36. Statement stmt = null;
  37. String sql;
  38. try {
  39. conn = DB.getConn();
  40. sql = "delete from product where id = " + id;
  41. stmt = DB.getStatement(conn);
  42. DB.executeUpdate(stmt, sql);
  43. } finally {
  44. DB.close(stmt);
  45. DB.close(conn);
  46. }
  47. }
  48. public List<Product> getProducts() {
  49. Connection conn = DB.getConn();
  50. Statement stmt = DB.getStatement(conn);
  51. String sql = "select * from product order by pdate desc";
  52. ResultSet rs = DB.getResultSet(stmt, sql);
  53. List<Product> products = new ArrayList<Product>();
  54. try {
  55. while (rs.next()) {
  56. Product p = getProductFromRs(rs);
  57. products.add(p);
  58. }
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. } finally {
  62. DB.close(stmt);
  63. DB.close(rs);
  64. DB.close(conn);
  65. }
  66. return products;
  67. }
  68. /**
  69.  * @param lazy 为true时,只取Product的信息,否则同时取出Product内Category对象的信息
  70.  */
  71. public int getProducts(List<Product> products, int pageNo, int pageSize, boolean lazy) {
  72. int totalRecords = -1;
  73. Connection conn = DB.getConn();
  74. Statement stmt = DB.getStatement(conn);
  75. String sql = "";
  76. if(lazy) {
  77. sql = "select * from product order by pdate desc";
  78. } else {
  79. sql = "select p.id productid, p.name pname, p.descr pdescr, p.normalprice, " +
  80. " p.memberprice, p.pdate, p.categoryid , " +
  81. " c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade " +
  82. " from product p join category c on (p.categoryid = c.id) order by p.pdate desc";
  83. }
  84. sql +=  " limit " + (pageNo - 1) * pageSize + "," + pageSize;
  85. ResultSet rs = DB.getResultSet(stmt, sql);
  86. Statement stmtCount = DB.getStatement(conn);
  87. ResultSet rsCount = DB.getResultSet(stmtCount,
  88. "select count(*) from product");
  89. //products = new ArrayList<Product>(); 千万小心这句话不要添加
  90. try {
  91. rsCount.next();
  92. totalRecords = rsCount.getInt(1);
  93. while (rs.next()) {
  94. Product p = null;
  95. if(lazy) {
  96. p = this.getProductFromRs(rs);
  97. } else {
  98. p = new Product();
  99. p.setId(rs.getInt("productid"));
  100. p.setName(rs.getString("pname"));
  101. p.setDescr(rs.getString("pdescr"));
  102. p.setNormalPrice(rs.getDouble("normalprice"));
  103. p.setMemberPrice(rs.getDouble("memberprice"));
  104. p.setPdate(rs.getTimestamp("pdate"));
  105. p.setCategoryId(rs.getInt("categoryid"));
  106. Category c = new Category();
  107. c.setId(rs.getInt("categoryid"));
  108. c.setName(rs.getString("cname"));
  109. c.setDescr(rs.getString("cdescr"));
  110. c.setPid(rs.getInt("pid"));
  111. c.setCno(rs.getInt("cno"));
  112. c.setGrade(rs.getInt("grade"));
  113. p.setCategory(c);
  114. }
  115. products.add(p);
  116. }
  117. } catch (SQLException e) {
  118. e.printStackTrace();
  119. } finally {
  120. DB.close(rsCount);
  121. DB.close(stmtCount);
  122. DB.close(stmt);
  123. DB.close(rs);
  124. DB.close(conn);
  125. }
  126. return totalRecords;
  127. }
  128. public Product loadById(int id) {
  129. Connection conn = null;
  130. ResultSet rs = null;
  131. Statement stmt = null;
  132. Product p = null;
  133. try {
  134. String sql = "select * from product where id = " + id;
  135. conn = DB.getConn();
  136. stmt = DB.getStatement(conn);
  137. rs = DB.getResultSet(stmt, sql);
  138. if (rs.next()) {
  139. p = getProductFromRs(rs);
  140. }
  141. } catch (SQLException e) {
  142. e.printStackTrace();
  143. } finally {
  144. DB.close(stmt);
  145. DB.close(rs);
  146. DB.close(conn);
  147. }
  148. return p;
  149. }
  150. public void update(Product p) {
  151. Connection conn = null;
  152. PreparedStatement pstmt = null;
  153. try {
  154. conn = DB.getConn();
  155. String sql = "update product set name=? , descr=?, normalprice=?, memberprice=?, categoryid=? where id=?";
  156. pstmt = DB.prepare(conn, sql);
  157. pstmt.setString(1, p.getName());
  158. pstmt.setString(2, p.getDescr());
  159. pstmt.setDouble(3, p.getNormalPrice());
  160. pstmt.setDouble(4, p.getMemberPrice());
  161. pstmt.setInt(5, p.getCategoryId());
  162. pstmt.setInt(6, p.getId());
  163. pstmt.executeUpdate();
  164. } catch (SQLException e) {
  165. e.printStackTrace();
  166. } finally {
  167. DB.close(pstmt);
  168. DB.close(conn);
  169. }
  170. }
  171. private Product getProductFromRs(ResultSet rs) {
  172. Product p = null;
  173. try {
  174. p = new Product();
  175. p.setId(rs.getInt("id"));
  176. p.setName(rs.getString("name"));
  177. p.setDescr(rs.getString("descr"));
  178. p.setNormalPrice(rs.getDouble("normalprice"));
  179. p.setMemberPrice(rs.getDouble("memberprice"));
  180. p.setPdate(rs.getTimestamp("pdate"));
  181. p.setCategoryId(rs.getInt("categoryid"));
  182. } catch (SQLException e) {
  183. e.printStackTrace();
  184. }
  185. return p;
  186. }
  187. public void delete(String conditionStr) {
  188. Connection conn = null;
  189. Statement stmt = null;
  190. String sql;
  191. try {
  192. conn = DB.getConn();
  193. sql = "delete from product " + conditionStr;
  194. stmt = DB.getStatement(conn);
  195. DB.executeUpdate(stmt, sql);
  196. } finally {
  197. DB.close(stmt);
  198. DB.close(conn);
  199. }
  200. }
  201. public int find(List<Product> products, int pageNo, int pageSize, String queryStr) {
  202. int totalRecords = -1;
  203. Connection conn = DB.getConn();
  204. Statement stmt = DB.getStatement(conn);
  205. String sql = "";
  206. sql = "select p.id productid, p.name pname, p.descr pdescr, p.normalprice, " +
  207. " p.memberprice, p.pdate, p.categoryid , " +
  208. " c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade " +
  209. " from product p join category c on (p.categoryid = c.id)" + queryStr + 
  210. " order by p.pdate desc";
  211. sql +=  " limit " + (pageNo - 1) * pageSize + "," + pageSize;
  212. System.out.println(sql);
  213. ResultSet rs = DB.getResultSet(stmt, sql);
  214. Statement stmtCount = DB.getStatement(conn);
  215. ResultSet rsCount = DB.getResultSet(stmtCount,
  216. "select count(*) from product " + queryStr.replaceAll("p\.", ""));
  217. try {
  218. rsCount.next();
  219. totalRecords = rsCount.getInt(1);
  220. while (rs.next()) {
  221. Product p = null;
  222. p = new Product();
  223. p.setId(rs.getInt("productid"));
  224. p.setName(rs.getString("pname"));
  225. p.setDescr(rs.getString("pdescr"));
  226. p.setNormalPrice(rs.getDouble("normalprice"));
  227. p.setMemberPrice(rs.getDouble("memberprice"));
  228. p.setPdate(rs.getTimestamp("pdate"));
  229. p.setCategoryId(rs.getInt("categoryid"));
  230. Category c = new Category();
  231. c.setId(rs.getInt("categoryid"));
  232. c.setName(rs.getString("cname"));
  233. c.setDescr(rs.getString("cdescr"));
  234. c.setPid(rs.getInt("pid"));
  235. c.setCno(rs.getInt("cno"));
  236. c.setGrade(rs.getInt("grade"));
  237. p.setCategory(c);
  238. products.add(p);
  239. }
  240. } catch (SQLException e) {
  241. e.printStackTrace();
  242. } finally {
  243. DB.close(rsCount);
  244. DB.close(stmtCount);
  245. DB.close(stmt);
  246. DB.close(rs);
  247. DB.close(conn);
  248. }
  249. return totalRecords;
  250. }
  251. }