需求:订单和商品表 (分析:一个订单针对多个商品表,一个商品也可以针对多个订单,其中订单里面有多个订单详情,一个订单详情对应一个商品!简单的来说一个订单详情和商品是一对一的关系!多对多分解成了一对多和一对多)
SQL语句: select u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id oid,o.user_id,o.order_number,od.id odid,od.order_id,od.item_id,od.total_price,od.status, i.id iid,i.item_name,i.item_price,i.item_detail from tb_user u,tb_order o,tb_orderdetail od,tb_item i where u.id = o.user_id and o.id = od.order_id and i.id = od.item_id and o.order_number = #{orderNumber} 实体类:(订单 一对多 订单详情 一对一 商品)订单的实体类:
package com.hisoft.pojo; import java.util.List; public class Order { int id; long userId; String orderNumber; User user; List<OrderDetail> olist; public List<OrderDetail> getOlist() { return olist; } public void setOlist(List<OrderDetail> olist) { this.olist = olist; } public int getId() { return id; } public void setId(int id) { this.id = id; } public long getUserId() { return userId; } public void setUserId(long userId) { this.userId = userId; } public String getOrderNumber() { return orderNumber; } public void setOrderNumber(String orderNumber) { this.orderNumber = orderNumber; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Order(int id, long userId, String orderNumber, User user) { super(); this.id = id; this.userId = userId; this.orderNumber = orderNumber; this.user = user; } public Order() { super(); // TODO Auto-generated constructor stub } @Override public String toString() { return "Order [id=" + id + ", userId=" + userId + ", orderNumber=" + orderNumber + ", user=" + user + ", olist=" + olist + "]"; } }订单详情实体类:(实际上和商品是一对一的管理,所有需要在里面创建一个商品的对象实现一对一)
package com.hisoft.pojo; public class OrderDetail { int id; int orderId; int itemId; double totalPrice; int status; Item item; public Item getItem() { return item; } public void setItem(Item item) { this.item = item; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getOrderId() { return orderId; } public void setOrderId(int orderId) { this.orderId = orderId; } public int getItemId() { return itemId; } public void setItemId(int itemId) { this.itemId = itemId; } public double getTotalPrice() { return totalPrice; } public void setTotalPrice(double totalPrice) { this.totalPrice = totalPrice; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public OrderDetail(int id, int orderId, int itemId, double totalPrice, int status) { super(); this.id = id; this.orderId = orderId; this.itemId = itemId; this.totalPrice = totalPrice; this.status = status; } public OrderDetail() { super(); // TODO Auto-generated constructor stub } @Override public String toString() { return "OrderDetail [id=" + id + ", orderId=" + orderId + ", itemId=" + itemId + ", totalPrice=" + totalPrice + ", status=" + status + ", item=" + item + "]"; } }商品的实体类
package com.hisoft.pojo; public class Item { int id; String itemName; float itemPrice; String itemDetail; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public float getItemPrice() { return itemPrice; } public void setItemPrice(float itemPrice) { this.itemPrice = itemPrice; } public String getItemDetail() { return itemDetail; } public void setItemDetail(String itemDetail) { this.itemDetail = itemDetail; } public Item(int id, String itemName, float itemPrice, String itemDetail) { super(); this.id = id; this.itemName = itemName; this.itemPrice = itemPrice; this.itemDetail = itemDetail; } public Item() { super(); // TODO Auto-generated constructor stub } @Override public String toString() { return "Item [id=" + id + ", itemName=" + itemName + ", itemPrice=" + itemPrice + ", itemDetail=" + itemDetail + "]"; } } 创建接口 public interface OrderMapper { Order getOrderUserDetailItemInfo(@Param("orderNumber")String ordernumber); } 在OrderMapper.xml里面书写sql语句 //这里注意一点这个resultMap里面继承了一对一的resultMap(哪里不太懂了 查看下一对多,里面有对里面的属性进行解释) <resultMap type="Order" id="OrderUserDetailItemInfo" autoMapping="true" extends="OrderUserInfo"> <collection property="olist" javaType="List" ofType="OrderDetail"> <id column="odid" property="id" /> <association property="item" javaType="Item"> <id column="iid" property="id" /> </association> </collection> </resultMap> <select id="getOrderUserDetailItemInfo" resultMap="OrderUserDetailItemInfo"> select u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id oid,o.user_id,o.order_number,od.id odid,od.order_id,od.item_id,od.total_price,od.status, i.id iid,i.item_name,i.item_price,i.item_detail from tb_user u,tb_order o,tb_orderdetail od,tb_item i where u.id = o.user_id and o.id = od.order_id and i.id = od.item_id and o.order_number = #{orderNumber} </select>