Mybatis分页插件的使用问题记录

项目中配置的分页插件依赖为

<dependency>
		    <groupId>com.github.pagehelper</groupId>
		    <artifactId>pagehelper</artifactId>
		    <version>5.1.7</version>
		</dependency>

之前的项目代码编写分页的方式为,通过传入的条件,先查询总条数,这是第一次sql执行,然后,根据传入的页码、条数,拼凑limit条件,查询分页记录,这是第二次sql执行,如下

int start = (Integer.valueOf(pageNum)-1)*Integer.valueOf(pageSize);
            int end = Integer.valueOf(pageSize);
            String dataType = "dataType";
            List<DataTypeList>list = dataTypeMapper.queryDataTypeList(request.getParameter(dataType),start,end);
            for (DataTypeList dataTypeList : list) {
                Date date = new Date(dataTypeList.getCheckTime());
                dataTypeList.setCheckDate(sdf.format(date));
            }
            page.setList(list);
            page.setPageSize(pageSize);
            int total = dataTypeMapper.countByExample(request.getParameter(dataType));
            page.setTotal(String.valueOf(total));
            page.setPageNum(pageNum);
            page.setPages(String.valueOf((total%Integer.valueOf(pageSize))>0?(total/Integer.valueOf(pageSize)+1):(total/Integer.valueOf(pageSize))));

可是这样的写法,有没有分页插件压根没影响啊,而且特别蠢,于是考虑改造,通过如下代码实现分页

PageHelper.startPage(Integer.valueOf(pageNum),Integer.valueOf(pageSize));
        List<DataTypeList>list = dataTypeMapper.queryDataTypeList1(request.getParameter("templateId"));
        PageInfo<DataTypeList> pageInfo = new PageInfo<DataTypeList>(list);

运行之后有了总条数等信息,但是分页却不生效,查询的是所有记录,于是,考虑增加配置,如下

pagehelper.helperDialect=mysq1
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSq1

如果自定义了数据库连接配置,那么需要用下面的方式,将分页插件定义到mybatis配置中,如下

@Bean
    public SqlSessionFactory mnrSqlSessionFactory(DataSource mnrDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(mnrDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources(MnrDataSourceConfig.MAPPER_LOCATION));
		org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
		configuration.setMapUnderscoreToCamelCase(true);
		sessionFactory.setConfiguration(configuration);
		PageInterceptor pageHelper = new PageInterceptor();
		Properties properties = new Properties();
		properties.setProperty("reasonable","true");
		pageHelper.setProperties(properties);
		sessionFactory.setPlugins(new Interceptor[]{pageHelper});
        return sessionFactory.getObject();
    }

我这里加了驼峰自动转换,当然,也可以在xml文件配置,如下

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 其他配置 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <!-- 这里可以配置PageHelper的属性 -->
                    <props>
                        <prop key="reasonable">true</prop>
                        <prop key="supportMethodsArguments">true</prop>
                        <prop key="returnPageInfo">check</prop>
                    </props>
                </property>
            </bean>
        </array>
    </property>
</bean>

另外,如果更改依赖为pageHelper-spring-boot-starter的话

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.0</version>
</dependency>

直接编写分页代码即可,不需要额外配置
starter的autoConfiguratuin中自动配置了分页插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RIP---路由信息协议

动态路由 自治系统 ---AS 由单一的机构或组织所管理的一系列 IP 网络设备的集合 。 AS 编号&#xff1a; ASN----1-65535----IANA &#xff08;互联网数字分配机构&#xff09; AS 的通讯方式 AS 内部 ---- 运行相同的路由协议 ---- 内部网关协议&#xff08; IGP &#x…

NLP 分词技术浅析

一、NLP 分词技术概述 &#xff08;一&#xff09;定义 自然语言处理&#xff08;NLP&#xff09;中的分词技术是将连续的文本序列按照一定的规则切分成有意义的词语的过程。例如&#xff0c;将句子 “我爱自然语言处理” 切分为 “我”、“爱”、“自然语言处理” 或者 “我…

排序算法:冒泡排序

每一次顺序便遍历&#xff0c;比较相邻的两个元素&#xff0c;交换。 void bubbleSort(vector<int>&v) { int n v.size();//元素个数 //外层j控制的是待排序区间的长度 for (int j n;j > 1;j--) { bool flag 0;//提高效率&#xff0c;判断比较好了就结束 /…

抽象之诗:C++模板的灵魂与边界

引言 在计算机科学的浩瀚长河中&#xff0c;C模板如同一颗璀璨的星辰&#xff0c;以其独特的泛型编程方式为程序设计注入了灵魂。它是抽象的艺术&#xff0c;是类型的舞蹈&#xff0c;是效率与灵活性的交响乐。模板不仅是一种技术工具&#xff0c;更是一种哲学思考&#xff0c…

Linux通信System V:消息队列 信号量

Linux通信System V&#xff1a;消息队列 & 信号量 一、信号量概念二、信号量意义三、操作系统如何管理ipc资源&#xff08;2.36版本&#xff09;四、如何对信号量资源进行管理 一、信号量概念 信号量本质上就是计数器&#xff0c;用来保护共享资源。多个进程在进行通信时&a…

day4:tomcat—maven-jdk

一&#xff0c;java项目部署过程 编译&#xff1a;使用javac命令将.java源文件编译成.class宇节码文件打包&#xff1a;使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式&#xff0c;如.jar文件&#xff0c;或者.war文件(用于web应用&#xff09…

提炼关键词的力量:AI驱动下的SEO优化策略

内容概要 在当今数字化营销的环境中&#xff0c;关键词对于提升网站的可见性和流量起着至关重要的作用。企业和个人必须重视有效的关键词策略&#xff0c;以便在竞争激烈的网络市场中脱颖而出。本文将深入探讨如何利用人工智能技术来优化SEO策略&#xff0c;特别是在关键词选择…

仓鼠身长能长到多少厘米?

仓鼠&#xff0c;作为颇受欢迎的宠物&#xff0c;其小巧玲珑的身形是吸引众多饲主的重要原因之一。那么&#xff0c;仓鼠的身长究竟能长到多少厘米呢&#xff1f;这背后其实蕴含着不少有趣的知识。 一般而言&#xff0c;常见的仓鼠品种如三线仓鼠、紫仓仓鼠等&#xff0c;成年…

八大设计模式

设计模式在日常软件开发中的重要性 目录 单例模式工厂模式策略模式代理模式观察者模式装饰器模式模板方法模式建造者模式总结 单例模式 单例模式确保一个类只有一个实例&#xff0c;通常用于管理共享资源&#xff0c;如配置、缓存、线程池等。 代码实现&#xff1a;双重检查…

直流充电桩基本工作原理

1、控制导引电路 2、电动汽车直流快充工作原理 1&#xff09;第一阶段 未充电自然状态阶段 充电枪处于自然阶段&#xff0c;充电枪上的按钮没有按下&#xff0c;也就是电路图中的开关S处于接通状态&#xff0c;此时R1 、 R2串联&#xff0c;检测点1处的电压为6V 2&#xff09;…

c4d动画怎么导出mp4视频,c4d动画视频格式设置

宝子们&#xff0c;今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的&#xff0c;让你能轻松理解和掌握&#xff0c;不管是理论基础&#xff0c;还是实际操作和技能技巧&#xff0c;都能学到&#xff0c;快速入门然后提升自己哦。 c4d动…

【原生js案例】ajax的简易封装实现后端数据交互

ajax是前端与后端数据库进行交互的最基础的工具&#xff0c;第三方的工具库比如jquery,axios都有对ajax进行第二次的封装&#xff0c;fecth是浏览器原生自带的功能&#xff0c;但是它与ajax还是有区别的&#xff0c;总结如下&#xff1a; ajax与fetch对比 实现效果 代码实现 …

Hive其四,Hive的数据导出,案例展示,表类型介绍

目录 一、Hive的数据导出 1&#xff09;导出数据到本地目录 2&#xff09;导出到hdfs的目录下 3&#xff09;直接将结果导出到本地文件中 二、一个案例 三、表类型 1、表类型介绍 2、内部表和外部表转换 3、两种表的区别 4、练习 一、Hive的数据导出 数据导出的分类&…

uniApp使用腾讯地图提示未添加maps模块

uniApp使用腾讯地图&#xff0c;打包提示未添加maps模块解决方案 这是报错信息&#xff0c;在标准基座运行的时候是没问题的&#xff0c;但是打包后会提示未添加&#xff0c;可以通过在mainfest里面把地图插件上腾讯地图的key更换高德地图的key&#xff0c;定位服务可以继续用腾…

OpenCV 学习记录:首篇

最近在学习机器视觉&#xff0c;希望能通过记录博客的形式来鞭策自己坚持学完&#xff0c;同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV&#xff1f; OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…

白嫖内网穿透之神卓互联Linux安装教程(树莓派)

最近家里有一个树莓派&#xff0c;捣鼓来去不知道干嘛&#xff0c;于是打算作为内网穿透盒子用&#xff0c;于是百度了一下&#xff0c;发现神卓互联还不错&#xff0c;可以让外网请求通过各种复杂的路由和防火墙访问到内网的服务。 以下是在Linux树莓派系统上安装神卓互联客户…

C语言入门(一):A + B _ 基础输入输出

前言 本专栏记录C语言入门100例&#xff0c;这是第&#xff08;一&#xff09;例。 目录 一、【例题1】 1、题目描述 2、代码详解 二、【例题2】 1、题目描述 2、代码详解 三、【例题3】 1、题目描述 2、代码详解 四、【例题4】 1、题目描述 2、代码详解 一、【例…

深度学习实验十七 优化算法比较

目录 一、优化算法的实验设定 1.1 2D可视化实验&#xff08;被优化函数为&#xff09; 1.2 简单拟合实验 二、学习率调整 2.1 AdaGrad算法 2.2 RMSprop算法 三、梯度修正估计 3.1 动量法 3.2 Adam算法 四、被优化函数变为的2D可视化 五、不同优化器的3D可视化对比 …

【计算机组成1】计算机系统

一、计算机的发展 1、计算机硬件的发展 第一代计算机(1946— 1957 年 )——电子管时代。 第二代计算机(1958 — 1964年)——晶体管时代 第三代计算机(1965— 197 1 年) ——中小规模集成电路时代 第四代计算机(1972年至今)——超大规模集成电路时代 计算机硬件的发展就是逻辑元…

指南: 如何在 MEV 项目中使用 Yul

这对我来说是一个反复出现的故事。我学习了一些 Solidity&#xff0c;发现了一个我想要研究的服务。代码看起来是这样的&#xff1a; Seaport Core: BasicOrderFulfiller.sol Solidity 代码在哪里&#xff1f;人们似乎不再使用普通的 Solidity 代码了 &#x1f972; 这种在智能…