使用mybatis-plus可以实现自动分页,这里只介绍两种方式。一种是使用QueryWrapper在service里写查询、另一种是自己写mapper文件写sql实现。
一、使用QueryWrapper在service里写查询实现分页
public IPage<SettleAgentAccount> findAgentAccount(SettleAgentAccountBO settleAgentAccountBO) {
BasePage<SettleAgentAccount> page = this.lambdaQuery().like(ObjectUtil.isNotEmpty(settleAgentAccountBO.getAgentName()), SettleAgentAccount::getAgentName, settleAgentAccountBO.getAgentName())
.like(ObjectUtil.isNotEmpty(settleAgentAccountBO.getAgentMobile()), SettleAgentAccount::getAgentMobile, settleAgentAccountBO.getAgentMobile())
.eq(ObjectUtil.isNotEmpty(settleAgentAccountBO.getAgentLevel()), SettleAgentAccount::getAgentLevel, settleAgentAccountBO.getAgentLevel())
.between(ObjectUtil.isNotEmpty(settleAgentAccountBO.getStartTime()) && ObjectUtil.isNotEmpty(settleAgentAccountBO.getEndTime()), SettleAgentAccount::getPayTime, settleAgentAccountBO.getStartTime(), settleAgentAccountBO.getEndTime())
.page(settleAgentAccountBO.parse());
return page;
}
1、请求实体要继承PageEntity
2、写完查询条件后最后直接.page(settleAgentAccountBO.parse())
返回的就是一个分页后的实体
二、自己写mapper文件写sql实现
service层写法(注意一下Page的导包导mybatisplus,不要导错包)
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@Override
public Page<AdminAgentVO> findNextTwo(AdminAgentBO adminAgentBO) {
adminAgentBO.setUserId(UserUtil.getUserId());
Page<AdminAgentVO> page = new Page<>(adminAgentBO.getPage(),adminAgentBO.getLimit());
//查出所有下两级经纪人
Page<AdminAgentVO> adminAgentVOS = agentRelationMapper.queryTwoPreAgent(page, adminAgentBO);
//查银牌不走该逻辑
if(ObjectUtil.isEmpty(adminAgentBO.getLevel()) || adminAgentBO.getLevel().equals(1)){
//查出银牌数量
List<AdminAgentVO> agentVOS = agentRelationMapper.queryAgentMedal(adminAgentBO.getUserId());
if(agentVOS.size()>0){
//key为userId value为银牌的数量
Map<Long, Long> map = agentVOS.stream().collect(Collectors.toMap(AdminAgentVO::getUserId, AdminAgentVO::getSubordinateNum));
//封装数据 将银牌的数量放到对应的金牌人下
adminAgentVOS.getRecords().stream().peek(a -> a.setSubordinateNum(ObjectUtil.isNotEmpty(map) && map.containsKey(a.getUserId()) ? map.get(a.getUserId()) : 0L)).collect(Collectors.toList());
}
}
return adminAgentVOS;
}
mapper层
xml文件的sql
返回的就是一个分页实体