订单数据模型分析思路一对一映射
高级映射本质来说是多个表的联合查询的过程。
数据表:
用户表user:记录了购买商品的用户信息。
订单表orders:记录了用户所创建的订单(购买商品的订单)
订单明细表orderdetail:记录了订单的详细信息即购买商品的信息。
商品表items:记录了商品信息。
数据模型分析:
表与表之间的业务关系
user和orders:(一对多关系)
user->orders:一个用户可以创建多个订单,一对多。
orders->user:一个订单只能由一个用户创建,一对一。
orders和orderdetail:(一对多关系)
orders->orderdetail:一个订单可以包括多个订单明细 一对多。
orderdetail->orders:一个订单明细只能包括在一个订单中 一对一。
需求:通过订单号来查询订单及用户信息
select * from orders o,user u where o.user_id = u.id and u.number=?
分析:通过分析,orders表示主表,user表是辅助表
在Order的pojo类上添加上User属性
public class Orders213 {
private Integer id;
private Integer userId;
private String number;
private Date createTime;
private String note;
//新增属性
private User213 user;
//省略了getter和setter方法
}
接口方法:
Orders213 selectOrdersByNumber(String number);
返回结果通过resultType返回:
使用resultMap配置一对一映射:
使用resultMap中提供的association配置一对一关系。
association:用于配置关联查询的单个对象。
property属性:要映射到pojo类中的对象的属性。
javaType:要映射的pojo属性的全限定名。
columnPrefix:针对数据库相同前缀的别名。
优化2:
extends继承自主类,resultMap使用一个已经存在的map类
注:一对一映射使用resultMap下的association来配置映射关系。



