jsp對應資料庫,基礎 多表查詢出現的問題
阿新 • • 發佈:2018-12-23
多表查詢出現的問題
傳統方式查詢的弊端 也就是結果集的封裝問題,這裡凸顯出了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;
}