childIds;
}
```
使用
```java
/**
* 一对一,一对多关系映射查询
* 映射只对以Deep结尾,比如 getByIdDeep listByIdsDeep 等
* 如果不需要关系映射就使用mybatis plus原生方法即可,比如 getById listByIds 等
*
* @see com.github.yulichang.base.service.MPJDeepService
*/
@SpringBootTest
class MappingTest {
@Resource
private UserMapper userMapper;
/**
* 根据id查询
*
* 查询过程:
* 一共查询了3次
* 第一次查询目标UserDO
* 第二次根据pid查询上级用户
* 第三次根据自身id查询下级用户
*/
@Test
void test1() {
UserDO deep = userMapper.selectByIdDeep(2);
System.out.println(deep);
}
/**
* 查询全部
*
* 查询过程:
* 一共查询了3次
* 第一次查询目标UserDO集合
* 第二次根据pid查询上级用户(不会一条记录一条记录的去查询,对pid进行汇总,用in语句一次性查出来,然后进行匹配)
* 第三次根据自身id查询下级用户(不会一条记录一条记录的去查询,对id进行汇总,用in语句一次性查出来,然后进行匹配)
*/
@Test
void test2() {
List list = userMapper.selectListDeep(Wrappers.emptyWrapper());
list.forEach(System.out::println);
}
/**
* 分页查询
*
* 查询过程与上面一致
*/
@Test
void test3() {
Page page = userMapper.selectPageDeep(new Page<>(2, 2), Wrappers.emptyWrapper());
page.getRecords().forEach(System.out::println);
}
}
```
MPJMapping 说明:
* @EntityMapping / @FieldMapping tag 关联实体类
* @EntityMapping / @FieldMapping thisField 当前类关联对应的字段的属性名,可以不填,默认为当前类的主键
* @EntityMapping / @FieldMapping joinField 关联类对应的字段的属性名,可以不填,默认为关联类的主键
* @EntityMapping / @FieldMapping isThrowExp 一对一查询时,如果查询到多条记录是否抛出异常,true:抛出异常,false:获取列表第一条数据
*
更多功能请看代码注释 [EntityMapping](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/annotation/EntityMapping.java)
[FieldMapping](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/annotation/FieldMapping.java)