package zyqx.order.dao;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import zyqx.book.domain.Book;
import zyqx.category.domain.Category;
import zyqx.order.domain.Order;
import zyqx.order.domain.OrderItem;
import cn.itcast.commons.CommonUtils;
import cn.itcast.jdbc.TxQueryRunner;
public class OrderDao {
private QueryRunner qr = new TxQueryRunner();
/**
* 添加订单
* @param order
*/
public void addOrder(Order order) {
try {
String sql = "insert into orders values(?,?,?,?,?,?)";
/*
* 处理util的Date转换成sql的Timestamp
*/
Timestamp timestamp = new Timestamp(order.getOrdertime().getTime());
Object[] params = {order.getOid(), timestamp, order.getTotal(),
order.getState(), order.getOwner().getUid(),
order.getAddress()};
qr.update(sql, params);
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 插入订单条目
* @param orderItemList
*/
public void addOrderItemList(List<OrderItem> orderItemList) {
/**
* QueryRunner类的batch(String sql, Object[][] params)
* 其中params是多个一维数组!
* 每个一维数组都与sql在一起执行一次,多个一维数组就执行多次
*/
try {
String sql = "insert into orderitem values(?,?,?,?,?)";
/*
* 把orderItemList转换成两维数组
* 把一个OrderItem对象转换成一个一维数组
*/
Object[][] params = new Object[orderItemList.size()][];
// 循环遍历orderItemList,使用每个orderItem对象为params中每个一维数组赋值
for(int i = 0; i < orderItemList.size(); i++) {
OrderItem item = orderItemList.get(i);
params[i] = new Object[]{item.getIid(), item.getCount(),
item.getSubtotal(), item.getOrder().getOid(),
item.getBook().getBid()};
}
qr.batch(sql, params);//执行批处理
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 按uid查询订单
* @param uid
* @return
*/
public List<Order> findByUid(String uid) {
/*
* 1. 通过uid查询出当前用户的所有List<Order>
* 2. 循环遍历每个Order,为其加载他的所有OrderItem
*/
try {
/*
* 1. 得到当前用户的所有订单
*/
String sql = "select * from orders where uid=?";
List<Order> orderList = qr.query(sql, new BeanListHandler<Order>(Order.class), uid);
/*
* 2. 循环遍历每个Order,为其加载它自己所有的订单条目
*/
for(Order order : orderList) {
loadOrderItems(order);//为order对象添加它的所有订单条目
}
/*
* 3. 返回订单列表
*/
return orderList;
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 加载指定的订单所有的订单条目
* @param order
* @throws SQLException
*/
private void loadOrderItems(Order order) throws SQLException {
/*
* 查询两张表:orderitem、book
*/
String sql = "select * from orderitem i, book b where i.bid=b.bid and oid=?";
/*
* 因为一行结果集对应的不再是一个javabean,所以不能再使用BeanListHandler,而是MapListHandler
*/
List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), order.getOid());
/*
* mapList是多个map,每个map对应一行结果集
* 一行:
* {iid=C7AD5492F27D492189105FB50E55CBB6, count=2, subtotal=60.0, oid=1AE8A70354C947F8B81B80ADA6783155, bid=7, bname=精通Hibernate,price=30.0, author=张卫琴, image=book_img/8991366-1_l.jpg, cid=2}
* ...
*
* 我们需要使用一个Map生成两个对象:OrderItem、Book,然后再建立两者的关系(把Book设置给OrderItem)
*/
/*
* 循环遍历每个Map,使用map生成两个对象,然后建立关系(最终结果一个OrderItem),把OrderItem保存起来
*/
List<OrderItem> orderItemList = toOrderItemList(mapList);
order.setOrderItemList(orderItemList);
}
/**
* 把mapList中每个Map转换成两个对象,并建立关系
* @param mapList
* @return
*/
private List<OrderItem> toOrderItemList(List<Map<String, Object>> mapList) {
List<OrderItem> orderItemList = new ArrayList<OrderItem>();
for(Map<String,Object> map : mapList) {
OrderItem item = toOrderItem(map);
orderItemList.add(item);
}
return orderItemList;
}
/**
* 把一个Map转换成一个OrderItem对象
* @param map
* @return
*/
private OrderItem toOrderItem(Map<String, Object> map) {
OrderItem orderItem = CommonUtils.toBean(map, OrderItem.class);
Book book = CommonUtils.toBean(map, Book.class);
orderItem.setBook(book);
return orderItem;
}
/**
* 修改订单状态
* @param oid
* @param status
* @throws SQLException
*/
public void updateStatus(String oid, int status) throws SQLException {
String sql = "update orders set state=? where oid=?";
qr.update(sql, status, oid);
}
/**
* 查询订单状态
* @param oid
* @return
* @throws SQLException
*/
public int findStatus(String oid) throws SQLException {
String sql = "select state from orders where oid=?";
Number number = (Number)qr.query(sql, new ScalarHandler(), oid);
return number.intValue();
}
/**
* 加载订单
* @param oid
* @return
*/
public Order load(String oid) {
try {
/*
* 1. 得到当前用户的所有订单
*/
String sql = "select * from orders where oid=?";
Order order = qr.query(sql, new BeanHandler<Order>(Order.class), oid);
/*
* 2. 为order加载它的所有条目
*/
loadOrderItems(order);
/*
* 3. 返回订单列表
*/
return order;
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 通过oid查询订单状态
* @param oid
* @return
*/
public int getStateByOid(String oid) {
try {
String sql = "select state from orders where oid=?";
return (Integer)qr.query(sql, new ScalarHandler(), oid);
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 修改订单状态
* @param oid
* @param state
* @return
*/
public void updateState(String oid, int state) {
try {
String sql = "update orders set state=? where oid=?";
qr.update(sql, state, oid);
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
public void updateAddress(String oid, String address) {
try {
String sql = "update orders set address=? where oid=?";
qr.update(sql,address, oid);
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 查询所有订单
* @return
*/
public List<Order> findAll() {
try {
String sql = "select * from orders";
System.out.println(sql);
return qr.query(sql, new BeanListHandler<Order>(Order.class));
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
javaweb 网上书城(包含数据库)
共410个文件
js:137个
css:55个
png:45个
5星 · 超过95%的资源 需积分: 50 89 下载量 30 浏览量
2019-07-01
12:18:47
上传
评论 38
收藏 6.76MB ZIP 举报
温馨提示
利用javaweb、jsp、mysql语言进行编写,实现网上书城代码。可进行登录注册、购物车、订单查询。另外拥有后台管理界面,进行数据库后台操作。已经过课程设计答辩,可放心使用. 前台 1.1 首页 1.2 用户注册/登陆 1.3 书籍查询 1.4 购物车 1.5 订单管理 1.5.1 订单新增 1.5.2 订单查询 1.5.3 撤单 1.5.4 签收 2. 后台 2.1 管理员登陆 2.2 书籍类别查询 2.3 书籍管理 2.3.1 新增 2.3.2.1 删除 2.3.2.2 修改 2.3.2.3 上传图片 2.3.2.4 上架 2.4订单管理
资源推荐
资源详情
资源评论
收起资源包目录
javaweb 网上书城(包含数据库) (410个子文件)
dy.bmp 6KB
sh.bmp 6KB
hx.bmp 6KB
guangda.bmp 6KB
bj.bmp 6KB
icbc.bmp 6KB
shpd.bmp 6KB
ningbo.bmp 6KB
cmbc.bmp 6KB
abc.bmp 6KB
zx.bmp 6KB
gf.bmp 6KB
sfz.bmp 6KB
beijingnongshang.bmp 6KB
nanjing.bmp 6KB
post.bmp 6KB
bcc.bmp 6KB
ccb.bmp 6KB
cib.bmp 6KB
bc.bmp 6KB
bh.bmp 6KB
zheshang.bmp 6KB
cmb.bmp 6KB
pingan.bmp 6KB
新建位图图像.bmp 0B
OrderDao.class 7KB
AdminAddBookServlet.class 5KB
OrderServlet.class 5KB
BookDao.class 4KB
UserServlet.class 4KB
OrderService.class 3KB
AdminCategoryServlet.class 2KB
AdminBookServlet.class 2KB
UserDao.class 2KB
CategoryDao.class 2KB
Book.class 2KB
Cart.class 2KB
Order.class 2KB
CartServlet.class 2KB
User.class 2KB
LoginFilter.class 2KB
UserService.class 2KB
BookServlet.class 2KB
AdminOrderServlet.class 2KB
AdminServlet.class 1KB
CategoryService.class 1KB
OrderItem.class 1KB
BookService.class 1KB
CartItem.class 1KB
Admin.class 1KB
CategoryServlet.class 1KB
AdminDao.class 1KB
Category.class 984B
AdminService.class 936B
CategoryException.class 488B
OrderException.class 453B
UserException.class 448B
.classpath 607B
org.eclipse.wst.common.component 450B
org.eclipse.wst.jsdt.ui.superType.container 49B
jquery-ui-1.8.14.custom.css 33KB
jquery-ui-1.8.14.custom.css 33KB
jquery.ui.theme.css 18KB
jquery.ui.theme.css 17KB
demos.css 14KB
jquery.ui.datepicker.css 4KB
jquery.ui.datepicker.css 4KB
jquery.datepick.css 4KB
desc.css 3KB
jquery.ui.button.css 2KB
jquery.ui.button.css 2KB
desc.css 2KB
list.css 2KB
jquery.ui.core.css 1KB
jquery.ui.core.css 1KB
login.css 1KB
jquery.ui.tabs.css 1KB
jquery.ui.tabs.css 1KB
jquery.ui.dialog.css 1KB
jquery.ui.dialog.css 1KB
mymenu.css 1KB
pay.css 1KB
ordersucc.css 1KB
desc.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.slider.css 1KB
jquery.ui.slider.css 1KB
showitem.css 1KB
jquery.ui.autocomplete.css 1KB
jquery.ui.autocomplete.css 1KB
list.css 1KB
list.css 1KB
jquery.ui.accordion.css 1KB
jquery.ui.accordion.css 1KB
desc.css 1KB
list.css 964B
regist.css 933B
add.css 687B
pwd.css 660B
共 410 条
- 1
- 2
- 3
- 4
- 5
资源评论
- 愈发执着2021-05-06拿来做毕业设计
Galaxy_C_21
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功