实现 后台需要显示订单信息,但是订单信息里面涉及到查询2张表 。本代码使用了MapListHandler

**

Dao层的代码实现

**
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Service层实现

在这里插入图片描述

Servlet层实现

在这里插入图片描述

Bean

在这里插入图片描述
在这里插入图片描述

实现效果

在这里插入图片描述
以上是图片展示,一下是部分代码展示

DAO部分

//通过查出2个表的数据where u.id=o.id的数据MapListHandler,然后再通过遍历MapList得到一个个的map,再通过转换,
	//将map的数据转换成Order对象,再把这一个个对象全部放在List里面,返回给 
	
	public List<Order> FindOrdersByUserId(String userid) throws SQLException {
	
			QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
			 
			//这个查出来的数据就包含了order和user的数据在一起
			String sql2 ="select o.*,u.* from orders o,user u where o.user_id=u.id";
			//List<User> user = qr.query(sql2, new BeanListHandler<User>(User.class));
			
			//MapListHandler()使让每一条订单在一个map里面,再将这些map放进一个list里面
			  List<Map<String,Object>> maplist = qr.query(sql2, new MapListHandler());
			 //写一个方法,将每一个Map里面的数据转化成Order类的,再将每个Order对象放在一个List里面
			  List<Order> orderList = toOrderList(maplist);
		
			 
			 return orderList;
			}

	private List<Order> toOrderList(List<Map<String, Object>> maplist) {
		
		List<Order> orderList = new ArrayList<>();
		//遍历每个list
		for (Map<String, Object> map : maplist) {
			
			//将每个map单独处理,弄成Order
			Order order= toOrder(map);
			 //再将每个Order放进OrderList里面
			 orderList.add(order);
		}
		return orderList ;
	}

	//将一个map转换为一个Order对象
	private Order toOrder(Map<String, Object> map){
		// TODO Auto-generated method stub
		
		Order order = new Order();
		User user = new User();
		try {
			
			//通过map映射order对象
			BeanUtils.populate(order, map);
			//通过map映射user对象
			BeanUtils.populate(user, map);
			
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		order.setUser(user);//将设置order对象的user的数据
	 	return order;
	}

Servler部分

package com.hui.bookstore.web.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hui.bookstore.model.Order;
import com.hui.bookstore.model.Product;
import com.hui.bookstore.model.pageResult;
import com.hui.bookstore.service.OrderService;
import com.hui.bookstore.service.ProductService;

/**后台功能
 * 
 * 通过分类查找商品,
 * 
 * Servlet implementation class ProductInfoServlet
 */
@WebServlet("/OrderShowServlet")
public class AdminOrderShowServlet extends HttpServlet {
	 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 
		//获取参数
		String id = request.getParameter("id");
		  
		//调用service
		OrderService os = new OrderService();
		List<Order> order = os.FindOrdersByUserId(id);
			//List<User> user = os.FindOrdersByUserId(id) 
			
		
			System.out.println(order);
		 
		//将数据放进request
		request.setAttribute("order",order);
	 
		//转发,跳转页面
		//4.跳转页面到指定商品页面product_info.jsp
		request.getRequestDispatcher("/admin/orders/list.jsp").forward(request, response);
		
	}
 
}

jsp页面的订单显示部分

<table cellspacing="0" cellpadding="1" rules="all"
							bordercolor="gray" border="1" id="DataGrid1"
							style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word">
							<tr
								style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3">

								<td align="center" width="20%">订单编号</td>
								<td align="center" width="10%">收件人</td>
								<td align="center" width="15%">地址</td>
								<td align="center" width="10%">联系电话</td>
								<td width="11%" align="center">总价</td>
								<td width="8%" align="center">所属用户</td>
								<td width="10%" align="center">订单状态</td>
								<td width="7%" align="center">查看</td>
								<td width="7%" align="center">删除</td>
							</tr>

							<c:forEach items="${order}" var="od">
							  <tr onmouseover="this.style.backgroundColor = 'white'"
								onmouseout="this.style.backgroundColor = '#F5FAFE';">
								<td style="CURSOR: hand; HEIGHT: 22px" align="center"
									width="20%">${od.id}</td>
								<td style="CURSOR: hand; HEIGHT: 22px" align="center"
									width="10%">${od.receiverName}</td>
								<td style="CURSOR: hand; HEIGHT: 22px" align="center"
									width="15%">${od.receiverAddress}</td>
								<td style="CURSOR: hand; HEIGHT: 22px" align="center"
									width="10%">${od.receiverPhone}</td>
								<td style="CURSOR: hand; HEIGHT: 22px" align="center">
									${od.money}</td>
								<td width="8%" align="center">${od.user.username}</td>
								<td width="10%" align="center">未支付</td>

								<td align="center" style="HEIGHT: 22px"><a
									href="#">
										<img
										src="${pageContext.request.contextPath}/admin/images/button_view.gif"
										border="0" style="CURSOR: hand"> </a></td>
								<td align="center" style="HEIGHT: 22px">
										<a
											href="#">
											<img
											src="${pageContext.request.contextPath}/admin/images/i_del.gif"
											width="16" height="16" border="0" style="CURSOR: hand">
										</a>
								</td>

							</tr>
									</c:forEach>
							
							
							
							
						</table>

最后,另附一张图

在这里插入图片描述
这几个要掌握
再最后,引一个链接https://blog.youkuaiyun.com/weixin_42247552/article/details/89784610
也是看懂上面这个博主写的才会写
今天的自己终于有输出了
终于搞定了这个,烦了好久
加油

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值