分页查询
PageInfo(github)
导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
controller
@ApiOperation("分页查询后台菜单")
@RequestMapping(value = "/list/{parentId}", method = RequestMethod.GET)
@ResponseBody
public CommonResult<CommonPage<UmsMenu>> list(@PathVariable Long parentId,
@RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
List<UmsMenu> menuList = menuService.list(parentId, pageSize, pageNum);
PageInfo<UmsMenu> pageInfo = new PageInfo<>(menuList);
return CommonResult.success(pageInfo);
}
service
@Override
public List<UmsMenu> list(Long parentId, Integer pageSize, Integer pageNum) {
PageHelper.startPage(pageNum, pageSize);
UmsMenuExample example = new UmsMenuExample();
example.setOrderByClause("sort desc");
example.createCriteria().andParentIdEqualTo(parentId);
// 此处查询的结果集为第pageNum的数据
return menuMapper.selectByExample(example);
}
Page(MybatisPlus)
配置类
/**
* 配置MP的分页插件
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
单表查询
@GetMapping("/list")
public Result<Page> pageDemo(int pageNum, int pageSize) {
// 构造分页构造器
Page pageInfo = new Page(pageNum, pageSize);
// 构造条件构造器
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.orderByDesc(Employee::getUpdateTime);
// 执行查询(page是内部函数)
employeeService.page(pageInfo, queryWrapper);
return Result.success(pageInfo);
}
连表查询
@Override
public IPage<SbOnlineUser> queryOnLineUsers(int pageNo, int pageSize, SbWearableDevices sbWearableDevices, List<String> userIds) {
IPage<SbOnlineUser> page = new Page<>(pageNo, pageSize);
return userMapper.queryByOnLineUser(page, sbWearableDevices, userIds);
}
// 自定义SQL
<select id="queryByOnLineUser" resultType="org.jeecg.modules.system.entity.SbOnlineUser">
SELECT
b.id,
b.realname,
b.email,
b.sex,
b.phone,
b.work_no,
a.last_online_time,
a.last_offline_time,
b.depart_ids,
TIMESTAMPDIFF(MINUTE, a.last_online_time, NOW()) as online_duration
,IF(a.last_offline_time is null,-1,TIMESTAMPDIFF(MINUTE, a.last_offline_time , NOW())) as offline_duration
FROM
sb_wearable_devices a
LEFT JOIN sys_user b ON a.`user`=b.id
WHERE
a.`status`=1
<if test="sbWearableDevices.onlineStatus!=null">
and a.online_status=#{sbWearableDevices.onlineStatus}
</if>
<if test="userIds!=null">
and b.id in
<foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类