1、引入依赖包

<dependency><groupId>com.github.miemiedev</groupId><artifactId>mybatis-paginator</artifactId><version>1.2.17</version>
</dependency>

2、Mybatis配置文件添加分页插件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN""http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration><settings><setting name="cacheEnabled" value="false" /><setting name="lazyLoadingEnabled" value="false" /><setting name="aggressiveLazyLoading" value="false"/></settings><plugins><plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"><property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/></plugin></plugins>
</configuration>

3、applicationContext.xml文件中增加属性配置

<bean class="com.vip.vpal.cpc.dataSource.ReplicationDataSource" id="oDataSource"><property name="targetDataSources"><map key-type="java.lang.String"><entry value-ref="oDataSourceMaster" key="master"></entry><entry value-ref="oDataSourceSlave" key="slave"></entry></map></property><property name="defaultTargetDataSource" ref="oDataSourceMaster"></property>
</bean><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="oDataSource"/>
</bean><bean id="myBatisSqlSessionFactoryO" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="oDataSource"/><property name="configLocation" value="classpath:mybatis-config.xml"></property><property name="mapperLocations" value="classpath*:mapper/*Mapper.xml"/>
</bean>

4、创建一个查询,mybatis映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.test.repository.TestRepository"><select id="selectdUserListPage" resultType="java.lang.String">SELECT p.idFROM test1 bjoin test2 pon b.usr_no = p.usr_nowhere p.transfer_sts = '2'and b.tm_smp &gt;= #{tmSmpStart}and b.tm_smp &lt;= #{tmSmpEnd}and b.CUR_AC_BAL &gt; 0</select>
</mapper>

5、创建一个接口

package com.test.repository;import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface TestRepository {List<String> selectdUserListPage(@Param("tmSmpStart") String tmSmpStart, @Param("tmSmpEnd") String tmSmpEnd,@Param("pageBounds") PageBounds pageBounds);}

6、具体的调用和使用

package com.test;import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import com.test.repository;
import org.joda.time.DateTime;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;import java.util.ArrayList;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:META-INF/service-conf/service.xml"})@TestExecutionListeners(value = {DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class})@FixMethodOrder(MethodSorters.NAME_ASCENDING)

public class BalTransferServiceTest{private static Logger log = LoggerFactory.getLogger(BalTransferServiceTest.class);@Autowiredprivate TestRepository testRepository;@Testpublic void testSelectPage() {List<String> userIdList = new ArrayList<>();String tmSmpStart = DateTime.now().minusDays(Integer.valueOf(30)).toString("yyyyMMddHHmmss");String tmSmpEnd = DateTime.now().toString("yyyyMMddHHmmss");int page = 1;int pageSize = 20;PageBounds pageBounds = new PageBounds(page, pageSize, Boolean.TRUE);List<String> tempList = testRepository.selectdVipUserListPage(tmSmpStart, tmSmpEnd, pageBounds);PageList pageList = (PageList) tempList;userIdList.addAll(tempList);log.info("tempList={},Page={},totalCount={},TotalPages={}", tempList.size(), pageList.getPaginator().getPage(), pageList.getPaginator().getTotalCount(),pageList.getPaginator().getTotalPages());Integer totalPages = pageList.getPaginator().getTotalPages();//如果还有大于1页的数据,需要继续翻页进行查询,这个时候可以控制不查询totalcount的查询for (int i = 2; i <= totalPages; i++) {pageBounds = new PageBounds(i, pageSize, Boolean.FALSE);tempList = testRepository.selectdUserListPage(tmSmpStart, tmSmpEnd, pageBounds);userIdList.addAll(tempList);}log.info("userIdList={}", userIdList.size());for (String temp : userIdList) {log.info("id={}", temp);}}}

7、使用PageBounds这个对象来控制结果的输出,常用的使用方式一般都可以通过构造函数来配置。

//默认构造函数不提供分页,返回ArrayList
new PageBounds();//取TOPN操作,返回ArrayList
new PageBounds(int limit);//只排序不分页,返回ArrayList
new PageBounds(Order... order);//默认分页,返回PageList
new PageBounds(int page, int limit);//分页加排序,返回PageList
new PageBounds(int page, int limit, Order... order);//使用containsTotalCount来决定查不查询totalCount,即返回ArrayList还是PageList
new PageBounds(int page, int limit, List<Order> orders, boolean containsTotalCount);

mybatis-paginator分页工具的使用简述相关推荐

  1. mybatis java8_Java 8 开发的 Mybatis 注解代码生成工具

    MybatisAnnotationTools MybatisAnnotationTools 是基于 Java8 开发的一款可以用于自动化生成 MyBatis 注解类的工具,支持配置数据源.类路径,表名 ...

  2. 关于mybatis的分页实现

    一.为什么要分页 数据特别多的时候,单次请求返回大量的数据接口会非常慢. 对于数据量特别大的查询,我们都会采用分页查询 二.怎么设计分页 每页有多少个 当前是在第几页 数据的总数 数据列表 基于这些属 ...

  3. mybatis常用分页插件,快速分页处理

    在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程, ...

  4. mybatis实现分页的几种方式

    本文目录 借助数组进行分页 借助Sql语句进行分页 拦截器分页 RowBounds实现分页 借助数组进行分页 原理:进行数据库查询操作时,获取到数据库中所有满足条件的记录,保存在应用的临时数组中,再通 ...

  5. KKB:mybatis的分页:pagehelper

    mybatis 的第一种分页方式: 物理分页(不用该方法) 将数据全部查询出来放到内存中,然后进行分页显示 使用offset 和 limit 确定每页的数据大小,不需要每次从数据库中查询,多消耗了内存 ...

  6. Bootstrap Paginator分页插件+ajax

    Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub  Bootstrap分页插件属性介绍: http://www.cnblogs. ...

  7. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  8. java分页的工具类,java分页工具类

    PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...

  9. SpringBoot集成MyBatis的分页插件PageHelper

    [写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...

最新文章

  1. hdu4864 贪心
  2. python_day6 shutil模块
  3. 计算机网络实验数据链路层分析,计算机网络第三次实验-数据链路层
  4. 学习笔记之卸载远程目标进程中的DLL模块(转)
  5. python 程序停止打印日志_停止 Spring Boot 服务的几种优雅姿势
  6. 零基础学习Python文本处理
  7. 老年人用什么方式存款最好?
  8. rssi参数获取_如何获取WlanGetNetworkBssList函数返回值的Rssi值
  9. 优化代码==>常见问卷调查模板,多端通用版本
  10. python pip源配置,pip配置文件存放位置的方法
  11. php 0x80070005,PHPIIS0x80070005解决方法
  12. python实战|python爬取58同城租房数据并以Excel文件格式保存到本地
  13. 漫话NFT——NFT的应用场景
  14. Linux中的0.0.0.0和 ::
  15. DDD的常见问题、争论以及局限性
  16. JavaScript计时器制作进度条
  17. 2021年成都列五高中高考成绩查询,2021年成都高考各高中成绩及本科升学率数据排名及分析...
  18. 四人中三人说真话一人说假话如何用编程去判断这样的条件
  19. 火柴人部落大乱斗html5游戏在线玩,火柴人部落战争
  20. 利用MATLAB批量读写tif数据(Landsat78)

热门文章

  1. 220v变12v初级线圈匝数_两款最简单的12V变220V逆变器
  2. python脚本下载_日记python脚本
  3. 山西电力市场日前价格预测【2023-05-09】
  4. c语言气温波动程序最大温差,《空气调节技术》试题库
  5. android经纬度获取行政区,获取当前经纬度、当前位置省市区(工具类)
  6. mysql 端口可以telnet_telnet 查看端口是否可访问
  7. Vue中倒计时2秒跳转界面
  8. 求职面试算法总结(感谢用心整理的小伙伴)
  9. Hapi-身份验证-hapi-auth-cookie
  10. [leetcode] Generate Parenthese