作用:

数据关联查询的解决方案,替代sql中的join方式(或者内存组装数据的方式),通过注解关联多表之间的关系,查询某实体的时候,自动带出其关联性的数据。

讲解:

示例展开前,先明确几个概念:

  • @BindEntity@BindEntityByMid是关联Entity的数据。
  • @BindField@BindFieldByMid系列是关联Entity下的某个字段。
  • @Bind*系列注解用在单类型的属性上即表达一对一,当注解用在集合类型的属性上时便表达一对多的意思。至于多对多的概念,就是外层数据查询的是集合形式,然后集合内部的对象是一对多的标注,多个一对多交至在一起既是多对多了。

以上概念看不懂没关系,看代码,再回过头来理解就好理解了。

注意:

为了解决数据库兼容支持的问题,关联查询底层原理是基于MybatisPlus的BaseMapper实现的,所以要求所有关联的实体必须要对应的Mapper且继承自MybatisPlus的BaseMapper,包括中间表的实体,在使用中间表关联查询的情况下,也需要遵循此约束。
MPE相当于把实体对应的Mapper视为数据访问窗口了,所以但凡需要从数据库查询数据的行为均需要通过对应的Mapper完成。

用法:

  1. // 第一步: 各种办法获取到User集合
  2. List<User> userList = selectUserList();
  3. // 第二步: 核心 Binder.bind 会基于User上的注解,自动级联出相关的数据赋值到userList的user中
  4. Binder.bind(userList);

示例:

本章节将利用三个示例展示数据关联查询的能力。
关联查询示例:例一
关联查询示例:例二
关联查询示例:例三