首页 > 其他分享 >PageHelper的使用和原理

PageHelper的使用和原理

时间:2023-05-30 10:44:48浏览次数:24  
标签:拦截器 分页 PageHelper ThreadLocal startPage 使用 原理 vo

一、使用说明:

public PageInfo<MonitoringRecordDTO> monitorRecordPage(MonitoringRecordVO vo) {
PageHelper.startPage(vo.getPage(), vo.getRows());
List<MonitoringRecordDTO> recordDTOList = realTimeMapper.selectMonitorRecordList(vo);
return new PageInfo<>(recordDTOList);
}

二、原理说明:

  PageHelper是MyBatis中的一个插件,其内部实现了一个PageInterceptor的拦截器。Mybatis启动后会加载这个拦截器到拦截器链中。

在我们使用PageHelper的过程中,首先、会先使用PageHelper.startPage这样的语句在当前线程上下文中设置一个ThreadLocal变量;然后,会再利用PageInterceptor这个分页拦截器拦截,从ThreadLocal中拿到分页的信息,判断如果有分页信息就去拼装分页的SQL语句(limit等语句)进行分页查询;最后,会最终把在ThreadLocal变量中的东西清除掉。

 

三,注意事项

PageHelper使用ThreadLocal本地线程变量保存了分页参数信息,分页参数和本地线程是绑定的。我们要保证PageHelper调用startPage调用后紧跟 MyBatis 查询方法,这是安全的。

因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。

 

标签:拦截器,分页,PageHelper,ThreadLocal,startPage,使用,原理,vo
From: https://www.cnblogs.com/heyi-77/p/17442584.html

相关文章

  • thinkphp正确开发系列:使用全局中间件统计当天活跃用户
    背景:pv、uv大家应该了解,不懂得搜索一下就知道了,现在有这么一个需求:统计当天有哪些用户登录了系统,也即:同一个用户,在一天之内第一次登录系统,记为1次,一天之内的后续登录(在登录状态刷新页面)忽略,项目使用的是thinkphp6,前后端分离架构。 实现方案:我们知道,php的开发框架,如:laravel、t......
  • 检测CPU,内存,磁盘使用率shell
    检测CPU,内存,磁盘使用率shell 1.检测CPU,内存,磁盘使用率超过80%,则发送邮件告警#!/bin/bash#当前主机ipHOST=$(ipashoweth0|grep'\inet\b'|awk'{print$2}'|sed's/\/.*//')#告警邮箱[email protected]#磁盘使用百分比阈值DISK_USAGE_THRESHOLD=80#CPU......
  • 新版本Edge浏览器如何查看每一个网页的内存占用和cpu使用情况
       ......
  • 使用VLC Media Player把mp4转化成mp3
    VLCMediaPlayer是一款免费的工具,它支持Windows、MacOS、Linux、iOS和Android。作为一款免费和跨平台公开资源的多媒体播放器,可播放大多数格式的媒体文件,并且支持转文件。则可以按照下面步骤将您的MP4影片转为MP3音频:步骤1.在计算机上启动VLCMediaPlayer,点击「媒体」并选择......
  • 图表库插件的使用
    echarts图表库插件的使用常见图表库:echarts,antv(蚂蚁金服做的).datav(阿里体系的)国际上:d3ds.js1.什么是echarts图表ECharts是一款基于javaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初......
  • Qt线程简单使用二:QObject~创建任务类
     需求:点击QPushButton按钮,QLabel中的数字,不断累加,一直到999。 做法:点击QPushButton后,启动线程,线程while循环,不断发送累加的数字会主线程,修改QLabel中的数字 其他:一个任务类,可以创建多个任务,写法麻烦一点,视情况决定是否采用这种方法。  主要代码://......
  • 苹果公司限制员工使用AI工具ChatGPT
    ​      导读:苹果公司最近发布了一份内部备忘录,禁止员工使用生成式AI平台(包括ChatGPT和GitHub的Copilot等)用于工作任务。 本文字数:600,阅读时长大约:2分钟 苹果公司最近发布了一份内部备忘录,禁止员工使用生成式AI平台(包括ChatGPT和GitHub的Copilot等)用于工作任务。这......
  • # yyds干货盘点 # 使用PyInstaller工具将Python程序打包成Mac可执行文件步骤
    大家好,我是皮皮。一、前言前几天在Python钻石群【JethroShen】问了一个Python打包的问题,这里拿出来给大家分享下。二、实现过程这里【eric】问了【ChatGPT】,并给出了代码,如下所示:在Mac系统中,Python程序不能直接打包成.exe可执行文件,因为.exe是Windows系统下的可执行文件格式,而Mac......
  • 使用PyInstaller工具将Python程序打包成Mac可执行文件步骤
    大家好,我是皮皮。一、前言前几天在Python钻石群【JethroShen】问了一个Python打包的问题,这里拿出来给大家分享下。二、实现过程这里【eric】问了【ChatGPT】,并给出了代码,如下所示:在Mac系统中,Python程序不能直接打包成.exe可执行文件,因为.exe是Windows系统下的可执行文件格......
  • 简单control net 使用,建筑风格重新生成
    原图生成海景房方法:启用controlnetAnnotatorresolution(分辨率)可以调小一点预处理器:边缘检测cannymodel:canny-fp16正向提示词: masterpiece,bestquality,building,seaviewroom反向提示词:worstquality,lowquality,normalquality,lowres ......