###Jsp+Servlet购物商城day04.1:显示订单。【重中之重:查询3张表信息,封装到Order】
2017-09-14 09:55
501 查看
首先有个练习:【根据一个oid,查询一个Order】
练习,main代码:
===######=借鉴思想:
封装层次关系(表关系):order( orderItem(product) )。
查询三张表,【三层数据封装思想】:
【
先查出主表Order基本信息,封装Order对象(信息不全,后面再加依赖);
再查出 下面两层 表OrderItem和Product的信息(外连接),封装OrderItem(OrderItem信息完整,封装了Product)。】
练习,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)。】
相关文章推荐
- ###Jsp+Servlet购物商城day04.2:订单模块难点总结。【购物商城最大的难点:【封装一个Order对象】查询封装三张表】
- ###Jsp+Servlet购物商城day03.3:生成订单。【重中之重:保存多表信息】:使用事物,dao两个方法分别插入主表和从表信息。
- ###Jsp+Servlet购物商城day02.1: 页面加载完,导航栏显示分类信息。(在公共页面head.jsp)
- ###Jsp+Servlet购物商城day04.4:订单模块 【页面双层遍历】 显示本页所有订单。bootstrap分页下标。
- ###Jsp+Servlet购物商城day04.3:订单模块Order实体设计失误。【Bean属性设计两大原则】-MyBeanUtils使用注意事项。
- ###Jsp+Servlet购物商城day03.2:生成订单。重点笔记
- ###Jsp+Servlet购物商城day02.2:首页显示 最新和热门商品
- ###Jsp+Servlet购物商城day04.5:支付:订单支付遇到的问题总结。
- ###Jsp+Servlet购物商城day02.3:分页显示商品
- Shop项目--12. 显示用户订单列表order_list.jsp
- 基于jsp+servlet图书管理系统之后台用户信息查询操作
- MVC分层+JDBC+数据库+Servlet实现JSP文件上传和显示+模糊查询+分页
- jsp+servlet学生信息查询系统小结
- ecshop用户中心订单详情增加快递单物流信息查询显示的功能
- 用jsp实现一个简单的购物车web应用系统。实现的添加购物商品,删除购物商品并且显示购物车信息。
- ###Jsp+Servlet购物商城day03.1:商品添加到购物车。重点笔记
- html修改为jsp、错误消息显示、错误消息回显、多个请求对应一个servlet、获取请求参数封装成对象
- servlet查询所有消息"List<Message>",并跳转到页面"messageList.jsp"进行显示
- Servlet+JSP+MySQL实现用户管理模块之六、实现用户信息显示
- <html:errors/> 一个jsp里两个或多个<html:errors/> 分别显示错误信息