您的位置:首页 > Web前端 > JavaScript

###Jsp+Servlet购物商城day04.1:显示订单。【重中之重:查询3张表信息,封装到Order】

2017-09-14 09:55 501 查看
首先有个练习:【根据一个oid,查询一个Order】

练习,main代码:

//==######=练习:【三层关联关系查询(三张表),必须使用两个SQL。】
public static void main(String[] args) throws Exception {
//根据一个订单oid,查询一个订单的详细信息。
//oid = 18da794cd36e46ed96b5bc6667c7efbb
QueryRunner qr = new QueryRunner(C3p0Utils.getDataSource());
String sql = "select * from orders where oid = ?";
Orders orders = qr.query(sql, new BeanHandler<Orders>(Orders.class),"6e66b0ae4a4143fe99a30e4602f43355");
//System.out.println(orders);
//根据一个订单oid,查询一个商品的详细信息。
//===######=多表查询OrderItem和Product信息,【外连接多表查询,还能使用  where条件对结果集过滤。】
String sql2 = "SELECT * FROM orderitem LEFT OUTER JOIN PRODUCT ON orderitem.pid = product.pid WHERE oid = '6e66b0ae4a4143fe99a30e4602f43355'";
List<Map<String, Object>> list = qr.query(sql2, new MapListHandler());

//===封装OrderItem。两张表数据封装。
/*
private List<OrderItem> orderItems;//==teacher
===######=======为什么,CartItem用LinkedHashMap<String,CartItem>,
而OrderItem使用List<OrderItem>?
(前面说过,哪种集合都可以实现,实现复杂度不同。如何选择集合,实现最简单的集合呢?)其实都差不多。
LinkedHashMap<String,OrderItem> ois;//==self
* */
List<OrderItem> oList = new ArrayList<OrderItem>();
for(Map m : list){
OrderItem oi = new OrderItem();
MyBeanUtils.setObject(oi, m);
Product pro = new Product();
MyBeanUtils.setObject(pro, m);
//===封装OrderItem。完毕
oi.setPro(pro);
oList.add(oi);
}
//===封装Order。完毕
orders.setOis(oList);

System.out.println(orders);
List<OrderItem> ois = orders.getOis();
for(OrderItem oi : ois){
System.out.println(oi);
}
}
//==######=练习:【三层关联关系查询(三张表),必须使用两个SQL。】----老师代码:去掉注释。
public static void main2(String[] args) throws Exception {
//根据一个订单oid,查询一个订单的详细信息。
//oid = 18da794cd36e46ed96b5bc6667c7efbb
QueryRunner qr = new QueryRunner(C3p0Utils.getDataSource());
String sql = "select * from orders where oid = ?";
Orders orders = qr.query(sql, new BeanHandler<Orders>(Orders.class),"6e66b0ae4a4143fe99a30e4602f43355");
//System.out.println(orders);
//根据一个订单oid,查询一个商品的详细信息。
String sql2 = "SELECT * FROM orderitem LEFT OUTER JOIN PRODUCT ON orderitem.pid = product.pid WHERE oid = '6e66b0ae4a4143fe99a30e4602f43355'";
List<Map<String, Object>> list = qr.query(sql2, new MapListHandler());

//===封装OrderItem。两张表数据封装。
List<OrderItem> oList = new ArrayList<OrderItem>();
for(Map m : list){
OrderItem oi = new OrderItem();
MyBeanUtils.setObject(oi, m);
Product pro = new Product();
MyBeanUtils.setObject(pro, m);
//===封装OrderItem。完毕
oi.setPro(pro);
oList.add(oi);
}
//===封装Order。完毕
orders.setOis(oList);

System.out.println(orders);
List<OrderItem> ois = orders.getOis();
for(OrderItem oi : ois){
System.out.println(oi);
}
}


===######=借鉴思想:

封装层次关系(表关系):order(  orderItem(product) )。

查询三张表,【三层数据封装思想】:



先查出主表Order基本信息,封装Order对象(信息不全,后面再加依赖);

再查出 下面两层 表OrderItem和Product的信息(外连接),封装OrderItem(OrderItem信息完整,封装了Product)。】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐