mybatisplus多表联查+条件构造+分页

本文介绍如何使用 MyBatis Plus 实现带有联表查询的分页功能,包括 Controller、Service、ServiceImpl 和 Mapper 层的具体实现方式,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意返回值IPage< T >的T必须是包含了联表查询需要的所有字段的实体类
LambdaQueryWrapper< T >的T必须是对应数据库的实体类
Wrapper需要import com.baomidou.mybatisplus.core.conditions.Wrapper包

controller类
IPage<SysUserDTO> page = baseService.paging(reqDTO);
service类
IPage<SysUserDTO> paging(PagingReqDTO<SysUser> reqDTO);
serviceImpl类
@Override
public IPage<SysUserDTO> paging(PagingReqDTO<SysUser> reqDTO) {
//创建分页对象
   Page<SysUser> page = new Page<>(reqDTO.getCurrent(), reqDTO.getSize());

   //查询条件
   LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();

   SysUser params = reqDTO.getParams();
   if(params!=null){
       if(!StringUtils.isBlank(params.getUserName())){
           wrapper.like(SysUser::getUserName, params.getUserName());
       }

       if (!ObjectUtils.isEmpty(needIds)) {
           wrapper.in(SysUser::getDepartId, needIds);
       }
   }

   IPage<SysUserDTO> page1 = sysUserMapper.paging(page,wrapper);
   return page1;
}
mapper类
	String querySql = "SELECT a.id,a.user_name,a.real_name,a.role_ids,b.dept_name AS departName,a.create_time,a.state FROM sys_user AS a LEFT JOIN sys_depart AS b ON b.id = a.depart_id";
    String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";

    @Select(wrapperSql)
    IPage<SysUserDTO> paging(Page page, @Param("ew") Wrapper queryWrapper);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值