欢迎来到淘宝彩票网走势图_淘宝彩票网官网首页_淘宝彩票网! 联系我们 网站地图

淘宝彩票网走势图_淘宝彩票网官网首页_淘宝彩票网

0379-65557469

娱乐消息
全国服务热线
0379-65557469

电话: 0379-65557469
0379-63930906
0379-63900388 
0379-63253525   
传真: 0379-65557469
地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室 

娱乐消息
当前位置: 首页 | 新闻中心 > 娱乐消息

Mybatis中运用PageHelper插件进行分页

作者:admin 发布时间:2019-09-06 19:29:51 浏览次数:275
打印 收藏 关闭
字体【
视力保护色

分页的场景比较常见,下面首要介绍一下运用PageHelper插件进行分页操作:

一、概述:

PageHelper支撑对mybatis进行分页操作,项目在github地址:

https://github.com/pagehelper/Mybatis-PageHelper

项目中文官网:

https://pagehelper.github.io/

二、运用(与springboot集成):

springboot比较于spring,相关装备都能够在代码中完结,和之前经过xml装备的办法不同。

1. mybatis数据源装备中,对sqlSessionFactory bean目标装备的时分,声明界说PageHelper目标,对sessionFactory目标设置此分页目标插件:

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
// 分页插件
PageHelper pageHelper = new PageHelper();
Properties pro鼻血栓perties = new Properties();
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("returnPageInfo", "check");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);
// 增加插件
bean.setPlugins(new Interceptor[] { pagMybatis中运用PageHelper插件进行分页eHelper });

如上代码,设置了分页插件的相关参数,相关参数的装备与作用能够进入插件官网检查。

2. 在需求分页的当地:

PageHelper.startPage(1, 10);
ListMybatis中运用PageHelper插件进行分页 list = countryMapper.queryList(1);

如上,调用了PageHelper的startPage办法,传入第几页以及每页的记载数,这样就能够查询出对应的记载;

假如需求获取查询记载的总页数以及总记载数:

Page
List list = countryMapper.queryList(1);
int pages = page.getPages();
int total = (int)page.getTotal();

三、原理:

上面介绍了PageHelper插件分页功用的运用,整体来说仍是比较便利的,不需求自己再去做额定的处理;

name为什么运用了如下句子之后,就能够Mybatis中运用PageHelper插件进行分页收效呢?

PageHelper.startPage(1, 10);
简略的看下这个办法的源码,一向追寻下去,能够发现终究调用的是这个办法:
1 public static Page startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero) {
2 Page page = new Page(pageNum, pageSize, count);
3 page.setReasonable(reasonable);
4 page.setPageSizeZero(pageSizeZero);
5
6 Page oldPage = SqlUtil.getLocalPage();
7 if (oldPage != null && oldPage.isOrderByOnly()) {
8 page.setOrderBy(oldPage.getOrderBy());
9 }
10 SqlUtil.setLocalPage(page);
11 return page;
12 }

能够看到,传入的pageNumber与pageSize最终是调用 SqlUtil.setLocalPage(page) 办法存了起来,咱们看下这个办法:

 publicMybatis中运用PageHelper插件进行分页 static void setLocalPage(Page page) {
LOCAL_PAGE.set(page);
}

那么这个LOCAL_PAGE目标是什么呢?

private static final ThreadLocal LOCAL_PAGE = new ThreadLocal();

其实便是一个threadlocMybatis中运用PageHelper插件进行分页al目标,用来存当时线程下pagenumber与pagesize;

那么能够估测,mybaits在履行查询的时分,因为设置了分页插件拦截器,会对查询sql进行处理,拼接对应页的查询句子,那么详细是哪一页以及每页有多少条记载,这些信息

就能够从这个threadlocal目标中获得。

版权所有:洛阳市建设工程咨询有限责任公司 联系人:李经理 电话: 地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室
版权所有 淘宝彩票网走势图 湘ICP备123721937号-5