前言

习惯上图,看流程图把,下面是具体实现以后的一个流程图。

步骤-

(1)点击订单详情,进入订单详情列表,展示订单的一下基本信息,在上图框内,可随机输入查询信息,查询具体订单信息。

(2)点击订单商品详情,进入具体订单,图中进入订单编号1的商品页面,可以看到具体商品信息,从数据库我们建立一张表,关联订单跟具体商品的关系。

正文

直接上代码吧,简单粗暴,因为之前有朋友需要具体实现,我会把最重要的放在这里,因为篇幅,所以一些不太重要的就不放了,下面是OrderDaoImpl.java的具体代码,这三个方法具体就涉及到了上图三个页面的跳转。

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.BeanListHandler;

import org.apache.commons.dbutils.handlers.ColumnListHandler;

import com.shao.Util.C3P0Util;

import com.shao.dao.OrderDao;

import com.shao.pojo.Order;

public class OrderDaoImpl implements OrderDao {

@Override

public List<Order> selectOrders() throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select * from orders";

return qr.query(sql, new BeanListHandler<Order>(Order.class));

}

@Override

public List<Object> selectItemsById(int order_id) throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select item_id from ord_item where order_id = ?";

return qr.query(sql, new ColumnListHandler(1), order_id);

}

@Override

public List<Order> selectByCondition(String id, String shop_id, String user_id) throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select * from orders where 1=1 ";

List list = new ArrayList();

if(!"".equals(id.trim())){

int iid = Integer.parseInt(id.trim());

sql+=" and id =?"; // 不能在这写% %'1002'%

list.add(iid);// '%1002%'

}

if(!"".equals(shop_id.trim())){

int sid = Integer.parseInt(shop_id.trim());

sql+=" and shop_id=?";

list.add(sid);

}

if(!"".equals(user_id.trim())){

int uid = Integer.parseInt(user_id.trim());

sql+=" and user_id = ?";

list.add(uid);

}

return qr.query(sql, new BeanListHandler<Order>(Order.class), list.toArray());

}

}

(1)public List<Order> selectOrders() 该方法主要是实现对所有订单的查询,这个应该没有难度。

(2)public List<Object> selectItemsById(int order_id) 该方法具体涉及到根据订单编号,寻找商品编号,然后我们再根据商品编号,寻找具体商品信息。寻找具体商品信息我写在ItemDaoImpl.java里面了。

public Item selectItemById(int id) throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select * from item where id = ?";

return qr.query(sql, new BeanHandler<Item>(Item.class), id);

}

(3) public List<Order> selectByCondition(String id, String shop_id, String user_id)该方法主要就是通过输入条件,进一步对订单筛选,这样我们可以快速定位到我们需要的订单信息。

问题

其实上面的都应该好处理,在这里,我遇到了一个问题,主要在于具体商品商品信息的处理,怎么才能通过上面的轮转跳到具体商品信息呢,在这里我后来用这样的方法处理出来了!

上面是订单详情的事件处理,/servlet/FindItemsByOrderServlet?order_id=${o.id },通过把order_id的编号传给这个servlet来处理,具体FindItemsByOrderServlet代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("UTF-8");

int order_id =Integer.parseInt(request.getParameter("order_id")) ;//获取order_id的参数并且转化成int类型

System.out.println("order_id = "+order_id);

OrderService os = new OrderServiceImpl();

ItemService is = new ItemServiceImpl();

List<Object> list = new ArrayList<>();

list= os.selectItemsById(order_id); //根据order_id找到对应的Item_id的集合,并放在list中

System.out.println(list.toString());

List<Item> itemList = new ArrayList<Item>();

for(int i=0;i<list.size();i++){

itemList.add(is.selectItemById((int)list.get(i))); //遍历list,根据商品编号找到具体的商品信息放在JavaBen(Item),然后存入itemList

}

request.getSession().setAttribute("item", itemList);

System.out.println("找到订单对应的商品信息!");

request.getRequestDispatcher("/admin/myhome/ord_itemlist.jsp").forward(request, response);

}

可以看到具体输出,我们通过得到订单编号1,查到在订单编号里面有2件商品,商品编号为2,3,然后放在List里面,最后遍历list 得到具体商品的信息,显示在页面中。

问题

还有一个问题,之前写完以后,发现List一直为空,没有取到2,3的商品编号,然后我就定义到下面的数据库语句:

@Override

public List<Integer> selectItemsById(int order_id) throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select item_id from ord_item where order_id = ?";

return qr.query(sql, new BeanListHandler<Integer>(Integer.class), order_id);

}

select item_id from ord_item where order_id = 1,通过运行这句话得到上面的结果,语句是对的,但是却一直说List 是空,那么我的问题就出在return qr.query(sql, new BeanListHandler<Integer>(Integer.class), order_id);后来查询了资料,BeanListHandler主要是存储对象的集合,而我这里只有一列值,但是我不知道为什么存储值就不行?所以我就继续找,一列数据采用的是ColumnListHandler,于是我改成了new ColumnListHandler<Integer>(),然后eclipse开始报错The type ColumnListHandler is not generic; it cannot be parameterized with arguments <Integer>告诉我,里面是不能存Integer,不支持,里面还是只能放Object,最后就继续改,写成了下面这样:

@Override

public List<Object> selectItemsById(int order_id) throws SQLException {

// TODO Auto-generated method stub

QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

String sql =" select item_id from ord_item where order_id = ?";

return qr.query(sql, new ColumnListHandler(1), order_id);

}

最后,控制器哪里也要处理,所以在servlet里面我们看到这样一句话:

for(int i=0;i<list.size();i++){

itemList.add(is.selectItemById((int)list.get(i))); //遍历list,根据商品编号找到具体的商品信息放在JavaBen(Item),然后存入itemList

}

我把(int)list.get(i)强制转化成Int类型,因为is.selectItemById(int shop_id);里面定义的Int 类型,到此就结束了,list里面终于出现了我预期的【2,3】集合。

问题就是这么让你意想不到,不过现在遇到问题我也不急了,主要就是一定要看错误,然后定义到具体位置,最怕就是显示台什么也不报错,我也出现了,于是我就重启服务器,然后显示台就会把错误显示出来,我们然后根据提示大概定义到错误的地方,我们可以采用我里面的System.out.print()去尝试输出,也可以Debug来一步步看,这样我们就可以快速定位问题,多做多调试,其实编程也可以很快乐,那种一点点的成就感!喜欢的可以关注,有问题,或者对上面的解决方案你有更好的,欢迎探讨,谢谢!

从订单信息页面进入订单详细商品页面,最简单的MVC思想相关推荐

  1. 采购订单增强(根据公司代码、采购订单类型等相关订单信息给采购订单税码设置默认值)

    根据公司代码.采购订单类型等相关订单信息给采购订单税码设置默认值: 使用BADI及方法: BADI : ME_PROCESS_PO_CUST Method: PROCESS_ITEM 在Method ...

  2. 10-38 A4-7在订单详细信息表中查找包含产品种类数超过特定值的订单信息 (20 分)

    在订单详情表(orderdetails)中查找订单中包含的不同产品的个数超过2的订单信息,显示订单号(OrderID)和总数量(重命名为totalQuantity ) select OrderID,s ...

  3. Flsak爱家租房--订单(获取用户订单、用户评论)

    文章目录 0.页面效果 1.思路总结 2.后端代码 3.前端js 4.前端html 0.页面效果 1.思路总结 1)用户点击"我的订单",js向后端获取数据,并加载在前端的模板中: ...

  4. [Python] python + selenium 抓取 京东商品数据(商品名称,售价,店铺,分类,订单信息,好评率,评论等)

    目录 一.环境 二.简介 三.京东网页分析 1.获取商品信息入口--商品列表链接获取 2.获取商品信息入口--商品详情链接获取 3.商品详情获取 4.商品评论获取 四.代码实现 五.运行结果 六.结语 ...

  5. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )淘宝订单接口

    **taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ) ¥开放平台基础API必须用户授权 获取单笔交易的详细信息 只有单笔订单的情况下Trade数据结构中才包含商品相关的 ...

  6. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题

    购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的信息是指购物车和购物项,即我们将购物车的信息存入数据库的同时,也存入每个购物项的信息,而且外键都关联好,这涉及到了Hibernat ...

  7. luffcc项目-11-购物车实现,切换有效期选项、购物车商品的删除操作,结算页面,订单的生成

    购物车实现 一.切换有效期选项 1.改变课程有效期 要实现课程有效期的计算,则必须我们要清楚一个课程可以有1到多个有效期选项.默认保存在课程模型中的价格如果有值,则这个值是永久有效的购买价格.如果有别 ...

  8. 对接快递100快递管家API之订单信息导入接口

    订单信息导入 1.功能描述 用于将贵方系统待发货订单信息导入到快递管家,实现快递单打印:不支持批量导入需逐一提交: 2.接口信息 请求地址 https://b.kuaidi100.com/v7/ope ...

  9. 订单接口获取商品订单详情/物流信息/交易订单

    淘宝官方商品详情.交易订单.订单详情.物流信息查询接口.适用于淘宝开放平台,可方便接入如订单同步.商品管理.插旗备注等API接口能力.现在我把整理好的订单商品接口分享给大家: 1.订单接口列表 物流管 ...

最新文章

  1. 【Silverlight】汉诺塔游戏,带AI
  2. c语言程序设计棋盘不对齐,经典c语言程序设计例(55页)-原创力文档
  3. 使用GDI+实现圆形进度条控件的平滑效果
  4. 计算机教学中因才施教,浅析高校《大学计算机基础》教学中的因材施教
  5. 系统带你学习 WebAPIs 第四讲
  6. 百度SEO未注册域名批量检测查询
  7. oracle数据库中sql%notfound的用法
  8. 调节效应检验(一):线性回归分析
  9. 正定矩阵和半正定矩阵
  10. C语言 fwrite 覆盖文件原始数据问题
  11. 取绝对值 :abs fabs fabsf用法
  12. 表单获取焦点和失去焦点
  13. PLC可编程控制器、单片机开发应用及变频调速综合实训装置
  14. envi5.3处理高分二号影像数据详细过程记录
  15. java报错root cause_[Filtered request failed.] with root cause java.io.OptionalDataException
  16. c++二维矩阵顺时针和逆时针旋转
  17. java mongo hint_聊一聊mongodb中的 explain 和 hint
  18. JAVA实现Freemarker生成动态数据的Word文档下载到浏览器
  19. 有关UDE(Unsupervised Domain Expansion)以及UDA,DG的思考与调研
  20. java练习题之华氏摄氏度与摄氏度的转化。

热门文章

  1. itlwm驱动_黑苹果春天:macOS英特尔/Intel无线驱动 itlwm v1.1.0 stable
  2. 微信企业号和手机关联的方式
  3. Minio客户端操作
  4. 我对说话人识别/声纹识别的研究综述
  5. pdf如何转换成ppt
  6. 写一个函数,输出四次“hello world“,每次间隔3秒
  7. 南卫理公会计算机官网,南卫理工会大学
  8. 开发脂肪秤方案PCBA设计
  9. 有没有手机版_漫威定制版智能手机壳 Galaxy S10的小伙伴不容错过
  10. .ps1 is not digitally signed. The script will not execute on the system.