复杂的join 例子
join相同表
java
List<SysUser> list=QueryChain.of(sysUserMapper)
.innerJoin(SysUser::getId,1,SysUser::getRole_id,2)
.list();join子查询
join子查询 - 方式1(推荐)
java
List<SysUser> list=QueryChain.of(sysUserMapper)
.select(SysUser.class)
.from(SysUser.class)
//不需要on的时候
.innerJoin(SysUser::getRole_id, SysRole::getId, (query, subQuery) -> {
subQuery.select(SysRole::getName);
query.select(subQuery, SysRole::getName);
query.orderBy(subQuery, SysRole::getId);
})
//需要on参数 用于追加on条件的时候
.innerJoin(SysUser::getRole_id, SysRole::getId, (query, subQuery, on) -> {
subQuery.select(SysRole::getId, SysRole::getName);
query.select(subQuery, SysRole::getName);
query.orderBy(subQuery, SysRole::getId);
})
.list();join子查询 - 方式2
java
SubQuery subQuery=SubQuery.create("sub")
.select(SysRole.class)
.from(SysRole.class)
.eq(SysRole::getId,1);
List<SysUser> list=QueryChain.of(sysUserMapper)
.select(SysUser.class)
.from(SysUser.class)
.innerJoin(SysUser.class,subQuery,on->on.eq(SysUser::getRole_id,subQuery.$outerField(SysRole::getId)))
.list();返回2张相同表字段
java
List<SysUserVO> list=QueryChain.of(sysUserMapper)
.select(SysUser.class)
.select(SysUser.class,2)
.from(SysUser.class)
.innerJoin(SysUser::getId,1,SysUser::getRole_id,2)
.returnType(SysUserVO.class)
.list();