前言
先看看Mybatis官方介绍
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
注意,这里是简单的XML! 可是,当我们的数据库表关系错综复杂,表与表之存在一对多、多对一、多对多的关系时,如何通过mybatis表示出他们的关系呢?网上很多文章都在介绍 association、 collection,我先不说association、 collection有多好,先来看看一个具体实例。
下图是订单的数据库表关系
有这样一个需求,我要展示类似于淘宝订单的效果,如下图:
我们看到上面的订单就会想到,要展示一条订单,需要:订单信息、物流信息、卖家信息、买家信息、商品信息、商品属性信息、商品状态信息…,至少也要5/6张表的数据,其中,订单对买家/卖家是多对一关系、订单对商品时多对多关系…,看看类似的xml:
<!-- 查询用户及购买的商品 type写的是user类的全路径 把数据映射到user中 -->
<resultMap type="org.mybatis.po.User" id="UserAndItemsResultMap">
<!-- 用户信息 -->
<id column="user_id" property="id" />
<result column="username" property="username" />
<result column="sex" property="sex" />
<result column="address" property="address" />
<!-- 订单信息一个用户对应多个订单,使用collection映射-->