jsp对应数据库,基础 多表查询出现的问题

多表查询出现的问题
传统方式查询的弊端 也就是结果集的封装问题,这里凸显出了mybatis的优点
多表联查,没办法封装到一个list中,所以就用MapListHandler

private void loadOrderItems(Order order) {
		try {
			//两张表 orderItem  book
			String sql="select * from orderitem i ,book b where i.bid=b.bid and oid=?";
			List<Map<String,Object>> mapList=qr.query(sql, new MapListHandler(), order.getOid());
			List<OrderItem> orderItemList=toOrderItemList(mapList);		
			order.setOrderItemList(orderItemList);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

maplist 是多个map
* 每个map对应 一行多表查询的记录
* 你给我一个mapList,我遍历每一个map
* 需要所得是,使用一个map生成两个对象,orderitem book,然后再建立两者的关系
* 也就是把book设置给orderItem 把orderitem保存起来
* 最终的结果是 mapList–>orderItemList

/*
传一个mapList,遍历每一个map 
*/
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
	 */
	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;
	}

猜你喜欢

转载自blog.csdn.net/qq_43349493/article/details/85114079