该部分讲述了 resultMap 的高级查询结果映射。
包括:多表关联查询,嵌套查询,延迟查询。
多对一:
嵌套结果:
这里的一对一 是从 数据关系上看的,因为 一条日志只对应一个用户。从逻辑上看,这里也是多对一的关系,因为多条日志 会对应 一个用户。
这种方式 叫做 嵌套结果。也就是 Mapper方法对应的sql语句中 使用 join, 只需要一句sql语句就就完了。
嵌套查询:
嵌套查询 与 嵌套结果的区别是:
在上图执行过程中,先执行语句 得到user 数据,在根据 user 的 id查询userLog数据。
嵌套结果只执行一次sql 语句, 嵌套查询执行了 2次语句。
两者使用场景:
两者的执行方式不同,决定了两者的使用场景不同。
例如在分页中,我们limit 前5条数据,在嵌套结果中,前5条数据对应 UserLog 的前5条数据。而在嵌套查询中,在获取user 数据中 limit 5 条数据,结果中是 前5个用户的日志数据。