联表查询
内联查询
java
public class Demo {
@Autowired
private SysUserMapper sysUserMapper;
public void page() {
Pager<SysUser> pager= QueryChain.of(sysUserMapper)
.join(SysUser::getRoleId, SysRole::getId)
.like(SysUser::getUserName,"abc")
.paging(Pager.of(1));
}
}
左联查询
左联查询 适合1对1情况,如果不是,则分页时需要关闭框架优化:Pager.of(1).setOptimize(false)
java
public class Demo {
@Autowired
private SysUserMapper sysUserMapper;
public void page() {
Pager<SysUser> pager= QueryChain.of(sysUserMapper)
.leftJoin(SysUser::getRoleId, SysRole::getId)
.like(SysUser::getUserName,"abc")
.paging(Pager.of(1));
}
}
右联查询
java
public class Demo {
@Autowired
private SysUserMapper sysUserMapper;
public void page() {
Pager<SysUser> pager= QueryChain.of(sysUserMapper)
.join(JoinMode.RIGHT, SysUser::getRoleId, SysRole::getId)
.like(SysUser::getUserName,"abc")
.paging(Pager.of(1));
}
}
全连接查询
java
public class Demo {
@Autowired
private SysUserMapper sysUserMapper;
public void page() {
Pager<SysUser> pager= QueryChain.of(sysUserMapper)
.join(JoinMode.FULL, SysUser::getRoleId, SysRole::getId)
.like(SysUser::getUserName,"abc")
.paging(Pager.of(1));
}
}
联表查询-ON条件:多个条件,怎么写?
java
public class Demo {
@Autowired
private SysUserMapper sysUserMapper;
public void page() {
Pager<SysUser> pager= QueryChain.of(sysUserMapper)
.join(JoinMode.RIGHT, SysUser::getRoleId, SysRole::getId, on ->on.eq(SysRole::getId,1))
.like(SysUser::getUserName,"abc")
.paging(Pager.of(1));
}
}
其他join(leftJoin,rightJoin,innerJoin)方法都有,以此类推
join子查询 ?
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();