package com.bjsxt.shopping.product;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import com.bjsxt.shopping.category.Category;
import com.bjsxt.shopping.util.DB;
public class ProductMySQLDAO implements ProductDAO {
public void add(Product p) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DB.getConn();
String sql = "insert into product values (null, ?, ?, ?, ?, ?, ?)";
pstmt = DB.prepare(conn, sql);
pstmt.setString(1, p.getName());
pstmt.setString(2, p.getDescr());
pstmt.setDouble(3, p.getNormalPrice());
pstmt.setDouble(4, p.getMemberPrice());
pstmt.setTimestamp(5, new Timestamp(p.getPdate().getTime()));
pstmt.setInt(6, p.getCategoryId());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
}
public void delete(int id) {
Connection conn = null;
Statement stmt = null;
String sql;
try {
conn = DB.getConn();
sql = "delete from product where id = " + id;
stmt = DB.getStatement(conn);
DB.executeUpdate(stmt, sql);
} finally {
DB.close(stmt);
DB.close(conn);
}
}
public List<Product> getProducts() {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "select * from product order by pdate desc";
ResultSet rs = DB.getResultSet(stmt, sql);
List<Product> products = new ArrayList<Product>();
try {
while (rs.next()) {
Product p = getProductFromRs(rs);
products.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(stmt);
DB.close(rs);
DB.close(conn);
}
return products;
}
/**
* @param lazy 为true时,只取Product的信息,否则同时取出Product内Category对象的信息
*/
public int getProducts(List<Product> products, int pageNo, int pageSize, boolean lazy) {
int totalRecords = -1;
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "";
if(lazy) {
sql = "select * from product order by pdate desc";
} else {
sql = "select p.id productid, p.name pname, p.descr pdescr, p.normalprice, " +
" p.memberprice, p.pdate, p.categoryid , " +
" c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade " +
" from product p join category c on (p.categoryid = c.id) order by p.pdate desc";
}
sql += " limit " + (pageNo - 1) * pageSize + "," + pageSize;
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = DB.getResultSet(stmtCount,
"select count(*) from product");
//products = new ArrayList<Product>(); 千万小心这句话不要添加
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Product p = null;
if(lazy) {
p = this.getProductFromRs(rs);
} else {
p = new Product();
p.setId(rs.getInt("productid"));
p.setName(rs.getString("pname"));
p.setDescr(rs.getString("pdescr"));
p.setNormalPrice(rs.getDouble("normalprice"));
p.setMemberPrice(rs.getDouble("memberprice"));
p.setPdate(rs.getTimestamp("pdate"));
p.setCategoryId(rs.getInt("categoryid"));
Category c = new Category();
c.setId(rs.getInt("categoryid"));
c.setName(rs.getString("cname"));
c.setDescr(rs.getString("cdescr"));
c.setPid(rs.getInt("pid"));
c.setCno(rs.getInt("cno"));
c.setGrade(rs.getInt("grade"));
p.setCategory(c);
}
products.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(stmt);
DB.close(rs);
DB.close(conn);
}
return totalRecords;
}
public Product loadById(int id) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
Product p = null;
try {
String sql = "select * from product where id = " + id;
conn = DB.getConn();
stmt = DB.getStatement(conn);
rs = DB.getResultSet(stmt, sql);
if (rs.next()) {
p = getProductFromRs(rs);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(stmt);
DB.close(rs);
DB.close(conn);
}
return p;
}
public void update(Product p) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DB.getConn();
String sql = "update product set name=? , descr=?, normalprice=?, memberprice=?, categoryid=? where id=?";
pstmt = DB.prepare(conn, sql);
pstmt.setString(1, p.getName());
pstmt.setString(2, p.getDescr());
pstmt.setDouble(3, p.getNormalPrice());
pstmt.setDouble(4, p.getMemberPrice());
pstmt.setInt(5, p.getCategoryId());
pstmt.setInt(6, p.getId());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
}
private Product getProductFromRs(ResultSet rs) {
Product p = null;
try {
p = new Product();
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
p.setDescr(rs.getString("descr"));
p.setNormalPrice(rs.getDouble("normalprice"));
p.setMemberPrice(rs.getDouble("memberprice"));
p.setPdate(rs.getTimestamp("pdate"));
p.setCategoryId(rs.getInt("categoryid"));
} catch (SQLException e) {
e.printStackTrace();
}
return p;
}
public void delete(String conditionStr) {
Connection conn = null;
Statement stmt = null;
String sql;
try {
conn = DB.getConn();
sql = "delete from product " + conditionStr;
stmt = DB.getStatement(conn);
DB.executeUpdate(stmt, sql);
} finally {
DB.close(stmt);
DB.close(conn);
}
}
public int find(List<Product> products, int pageNo, int pageSize, String queryStr) {
int totalRecords = -1;
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "";
sql = "select p.id productid, p.name pname, p.descr pdescr, p.normalprice, " +
" p.memberprice, p.pdate, p.categoryid , " +
" c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade " +
" from product p join category c on (p.categoryid = c.id)" + queryStr +
" order by p.pdate desc";
sql += " limit " + (pageNo - 1) * pageSize + "," + pageSize;
System.out.println(sql);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = DB.getResultSet(stmtCount,
"select count(*) from product " + queryStr.replaceAll("p\\.", ""));
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Product p = null;
p = new Product();
p.setId(rs.getInt("productid"));
p.setName(rs.getString("pname"));
p.setDescr(rs.getString("pdescr"));
p.setNormalPrice(rs.getDouble("normalprice"));
p.setMemberPrice(rs.getDouble("memberprice"));
p.setPdate(rs.getTimestamp("pdate"));
p.setCategoryId(rs.getInt("categoryid"));
Category c = new Category();
c.setId(rs.getInt("categoryid"));
c.setName(rs.getString("cname"));
c.setDescr(rs.getString("cdescr"));
c.setPid(rs.getInt("pid"));
c.setCno(rs.getInt("cno"));
c.setGrade(rs.getInt("grade"));
p.setCategory(c);
products.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(stmt);
DB.close(rs);
DB.close(conn);
}
return totalRecords;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JAVA网上商城项目完整源码

共722个文件
gif:556个
jsp:43个
java:31个

23 下载量 46 浏览量
2024-04-03
08:54:36
上传
评论 2
收藏 5.06MB ZIP 举报
温馨提示
Java网上商城项目完整源码 网上商城项目是一个涉及电子商务的综合性系统,通常包括前端网站、后台管理系统和相关的后端服务。其主要目标是为用户提供在线购物、商品展示、订单管理、支付功能等服务。以下是网上商城项目的一般概述: 1. 前端网站:网上商城项目的前端网站是用户与商城进行交互的界面,包括商品展示、搜索功能、购物车、下单和支付等功能。前端网站通常还包括用户注册、登陆、个人信息管理等模块。 2. 后台管理系统:后台管理系统用于商家管理、订单管理、商品管理、促销管理等功能。通过后台管理系统,商家可以管理商品信息、处理订单、设置促销活动等。 3. 后端服务:后端服务是网上商城项目的核心,负责处理前端网站和后台管理系统的请求,并与各种第三方平台(例如支付平台、物流平台)进行集成。其中包括用户认证、商品信息管理、订单处理、支付接口、物流追踪等功能。 4. 数据库设计:网上商城项目需要一个可靠的数据库用于存储用户信息、商品信息、订单信息等数据,因此数据库的设计是至关重要的一部分。 5. 安全性和性能优化:由于涉及用户隐私和交易信息,网上商城项目需要高度关注安全性。同时,......
资源推荐
资源详情
资源评论

















收起资源包目录





































































































共 722 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论



百锦再@新空间
- 粉丝: 2w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- FactoryIO与TIA Portal V15:加工装配仿真的梯形图编程入门指南 - 梯形图编程 实用版
- 基于MATLAB的移动储能提升配电网韧性的两阶段优化策略及代码实现
- docker的logstash镜像
- 【HCIA-Datacom认证】IP路由基础:路由表结构与路由选择机制详解及静态路由配置实践
- 261 基于STM32设计的景区便民服务系统(NBIOT).pdf
- 7月1期第5周电子版资料(7.28-8.2).zip
- 7月1期第3周每日一练汇总(7.14-7.18).zip
- 非常详实的VBA常用技巧
- (源码)基于Spring Boot框架的卓越导师双选系统.zip
- (源码)基于Spring Boot框架的流浪动物管理系统.zip
- Simulink电机控制系统的多策略仿真设计与实现
- (源码)基于Spring Boot框架的人事管理系统.zip
- 8bit逐次逼近型SAR ADC电路设计成品——基于SMIC 0.18工艺的入门级单端结构设计
- (源码)基于Spring Boot框架的中医养生系统.zip
- 275 基于STM32设计的智能家居控制系统(华为云IOT).pdf
- TSP优化解决方案:基于蚁群算法的MATLAB实现及路径图优化方法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
