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

ICQ/即时通讯

开发平台:

Java

  1. package com.bjsxt.shopping.order;
  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.Iterator;
  10. import java.util.List;
  11. import com.bjsxt.shopping.product.Product;
  12. import com.bjsxt.shopping.user.User;
  13. import com.bjsxt.shopping.util.DB;
  14. public class OrderMySQLDAO implements OrderDAO {
  15. public int add(SalesOrder so) {
  16. int orderId = -1;
  17. Connection conn = DB.getConn();
  18. boolean autoCommit = true;
  19. try {
  20. autoCommit = conn.getAutoCommit();
  21. conn.setAutoCommit(false);
  22. } catch (SQLException e1) {
  23. e1.printStackTrace();
  24. }
  25. String sql = "insert into salesorder values (null, ?, ?, ? ,?)";
  26. PreparedStatement pstmt = DB.prepare(conn, sql,
  27. Statement.RETURN_GENERATED_KEYS);
  28. String sqlDetail = "insert into salesitem values (null, ?, ?, ?, ?)";
  29. PreparedStatement pstmtDetail = DB.prepare(conn, sqlDetail);
  30. ResultSet rsKey = null;
  31. try {
  32. pstmt.setInt(1, so.getUser().getId());
  33. pstmt.setString(2, so.getAddr());
  34. pstmt.setTimestamp(3, new Timestamp(so.getODate().getTime()));
  35. pstmt.setInt(4, so.getStatus());
  36. pstmt.executeUpdate();
  37. rsKey = pstmt.getGeneratedKeys();
  38. rsKey.next();
  39. orderId = rsKey.getInt(1);
  40. List<SalesItem> items = so.getItems();
  41. Iterator<SalesItem> it = items.iterator();
  42. while (it.hasNext()) {
  43. SalesItem si = it.next();
  44. pstmtDetail.setInt(1, si.getProduct().getId());
  45. pstmtDetail.setDouble(2, si.getUnitPrice());
  46. pstmtDetail.setInt(3, si.getCount());
  47. pstmtDetail.setInt(4, orderId);
  48. pstmtDetail.addBatch();
  49. }
  50. pstmtDetail.executeBatch();
  51. conn.commit();
  52. } catch (SQLException e) {
  53. e.printStackTrace();
  54. } finally {
  55. try {
  56. conn.setAutoCommit(autoCommit);
  57. } catch (SQLException e) {
  58. e.printStackTrace();
  59. }
  60. DB.close(rsKey);
  61. DB.close(pstmtDetail);
  62. DB.close(pstmt);
  63. DB.close(conn);
  64. }
  65. return orderId;
  66. }
  67. public void delete(int id) {
  68. // TODO Auto-generated method stub
  69. }
  70. public void delete(String conditionStr) {
  71. // TODO Auto-generated method stub
  72. }
  73. public int find(List<SalesOrder> products, int pageNo, int pageSize,
  74. String queryStr) {
  75. // TODO Auto-generated method stub
  76. return 0;
  77. }
  78. public List<SalesOrder> getOrders() {
  79. // TODO Auto-generated method stub
  80. return null;
  81. }
  82. public int getOrders(List<SalesOrder> orders, int pageNo, int pageSize) {
  83. Connection conn = DB.getConn();
  84. Statement stmtCount = DB.getStatement(conn);
  85. Statement stmt = DB.getStatement(conn);
  86. ResultSet rs = null;
  87. ResultSet rsCount = null;
  88. int totalRecords = 0;
  89. try {
  90. rsCount = DB.getResultSet(stmtCount,
  91. "select count(*) from salesorder");
  92. rsCount.next();
  93. totalRecords = rsCount.getInt(1);
  94. conn = DB.getConn();
  95. String sql = "select salesorder.id, salesorder.userid, salesorder.odate, salesorder.addr, salesorder.status , "
  96. + " user.id uid, user.username, user.password, user.addr uaddr, user.phone, user.rdate from salesorder "
  97. + " left join user on (salesorder.userid = user.id)"
  98. + " limit " + (pageNo - 1) * pageSize + "," + pageSize;
  99. System.out.println(sql);
  100. rs = DB.getResultSet(stmt, sql);
  101. while (rs.next()) {
  102. User u = new User();
  103. u.setId(rs.getInt("uid"));
  104. u.setAddr(rs.getString("uaddr"));
  105. u.setUsername(rs.getString("username"));
  106. u.setPassword(rs.getString("password"));
  107. u.setPhone(rs.getString("phone"));
  108. u.setRdate(rs.getTimestamp("rdate"));
  109. SalesOrder so = new SalesOrder();
  110. so.setId(rs.getInt("id"));
  111. so.setAddr(rs.getString("addr"));
  112. so.setODate(rs.getTimestamp("odate"));
  113. so.setStatus(rs.getInt("status"));
  114. so.setUser(u);
  115. orders.add(so);
  116. }
  117. } catch (SQLException e) {
  118. e.printStackTrace();
  119. } finally {
  120. DB.close(stmt);
  121. DB.close(stmtCount);
  122. DB.close(rs);
  123. DB.close(rsCount);
  124. DB.close(conn);
  125. }
  126. return totalRecords;
  127. }
  128. public SalesOrder loadById(int id) {
  129. Connection conn = DB.getConn();
  130. Statement stmt = DB.getStatement(conn);
  131. ResultSet rs = null;
  132. SalesOrder so = null;
  133. try {
  134. String sql = "select salesorder.id, salesorder.userid, salesorder.odate, salesorder.addr, salesorder.status , " +
  135.    " user.id uid, user.username, user.password, user.addr uaddr, user.phone, user.rdate from salesorder " +
  136.    " join user on (salesorder.userid = user.id) where salesorder.id = " + id; 
  137. rs = DB.getResultSet(stmt, sql);
  138. if(rs.next()) {
  139. User u = new User();
  140. u.setId(rs.getInt("uid"));
  141. u.setAddr(rs.getString("uaddr"));
  142. u.setUsername(rs.getString("username"));
  143. u.setPassword(rs.getString("password"));
  144. u.setPhone(rs.getString("phone"));
  145. u.setRdate(rs.getTimestamp("rdate"));
  146. so = new SalesOrder();
  147. so.setId(rs.getInt("id"));
  148. so.setAddr(rs.getString("addr"));
  149. so.setODate(rs.getTimestamp("odate"));
  150. so.setStatus(rs.getInt("status"));
  151. so.setUser(u);
  152. }
  153. } catch (SQLException e) {
  154. e.printStackTrace();
  155. } finally {
  156. DB.close(rs);
  157. DB.close(stmt);
  158. DB.close(conn);
  159. }
  160. return so;
  161. }
  162. public void update(SalesOrder so) {
  163. }
  164. public List<SalesItem> getSalesItems(int orderId) {
  165. Connection conn = DB.getConn();
  166. Statement stmt = DB.getStatement(conn);
  167. ResultSet rs = null;
  168. List<SalesItem> items = new ArrayList<SalesItem>();
  169. try {
  170. conn = DB.getConn();
  171. String sql = "select salesorder.id, salesorder.userid, salesorder.odate, salesorder.addr, salesorder.status , " +
  172.  " salesitem.id itemid, salesitem.productid, salesitem.unitprice, salesitem.pcount, salesitem.orderid, " +
  173.  " product.id pid, product.name, product.descr, product.normalprice, product.memberprice, product.pdate, product.categoryid" +
  174.  " from salesorder join salesitem on (salesorder.id = salesitem.orderid)" +
  175.  " join product on (salesitem.productid = product.id) where salesorder.id = " + orderId;
  176. System.out.println(sql);
  177. rs = DB.getResultSet(stmt, sql);
  178. while(rs.next()) {
  179. Product p = new Product();
  180. p.setId(rs.getInt("pid"));
  181. p.setCategoryId(rs.getInt("categoryid"));
  182. p.setName(rs.getString("name"));
  183. p.setDescr(rs.getString("descr"));
  184. p.setPdate(rs.getTimestamp("pdate"));
  185. p.setNormalPrice(rs.getDouble("normalprice"));
  186. p.setMemberPrice(rs.getDouble("memberprice"));
  187. SalesItem si = new SalesItem();
  188. si.setOrderId(orderId);
  189. si.setId(rs.getInt("itemid"));
  190. si.setUnitPrice(rs.getDouble("unitprice"));
  191. si.setCount(rs.getInt("pcount"));
  192. si.setProduct(p);
  193. items.add(si);
  194. }
  195. } catch (SQLException e) {
  196. e.printStackTrace();
  197. } finally {
  198. DB.close(rs);
  199. DB.close(stmt);
  200. DB.close(conn);
  201. }
  202. return items;
  203. }
  204. public void updateStatus(SalesOrder order) {
  205. Connection conn = DB.getConn();
  206. Statement stmt = DB.getStatement(conn);
  207. try {
  208. String sql = "update salesorder set status = " + order.getStatus() + " where id = " + order.getId();
  209. DB.executeUpdate(stmt, sql);
  210. } finally {
  211. DB.close(stmt);
  212. DB.close(conn);
  213. }
  214. }
  215. }