一.一对一的映射关系:
对应的实体类:
用户user实体类:
public class User implements Serializable{
private static final long serialVersionUID = 5414937486109882058L;
private int id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
订单order实体类:
public class Orders {
private Integer id;
private Integer userId;
private String number;
private Date createtime;
private String note;
//一对多,一个用户可以有多个订单
private User user;
一对一映射的sql语句:
<!--
resultMap:手动将查询结果映射在po中
id:resultMap的唯一标识
type:将查询结构放入orders对象中
-->
<resultMap type="cn.itcast.po.Orders" id="ordersAndUserResultMap">
<!--
id标签指定主键字段的映射关系
column:指定数据库中的列
property:指定java中pojo的属性
-->
<id column="id" property="id"/>
<!--
result标签指定非主键字段的映射关系
column:指定数据库中的列
property:指定java中pojo的属性
-->
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!--
association:标签指定单个对象关系的映射
property:存到orders对象中的user属性中
javaType:是指property="user"中user对应的类型
-->
<association property="user" javaType="cn.itcast.po.User">
<id column="userId" property="id"/>
<result column="username" property="username"/>
<result column="birthday" property="birthday"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association>
</resultMap>
一对多的时候的sql语句;
<!-- 用户和订单关系映射使用extends继承 -->
<resultMap type="cn.itcast.po.Orders" id="userOrdersAndDetailResultMap"
extends="ordersAndUserResultMap">
<!--
collection:使用这个标签来指定集合的映射关系
property:将查询结果放到orders对象中的detailList集合属性中
ofType:指定集合属性中泛型对象的类型
-->
<collection property="detailList"
ofType="cn.itcast.po.Orderdetail">
<id column="detailId" property="id"/>
<result column="orders_id" property="ordersId"/>
<result column="items_id" property="itemsId"/>
<result column="items_num" property="itemsNum"/>
</collection>
</resultMap>
二.延迟加载:
延迟加载是优化查询速度的一种方式方法,就是按需要进行加载。
Mybatis中支持延迟加载的标签:
<association>
<collection>