1.  引入Maven依赖

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.cjs.example</groupId>
<artifactId>cjs-mybatis-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>cjs-mybatis-example</name>
<description></description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> <!-- http://www.mybatis.org/generator/configreference/xmlconfig.html -->
<!-- http://www.mybatis.org/generator/running/runningWithMaven.html -->
<!-- mvn mybatis-generator:generate -->
<!-- mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
</plugin>
</plugins>
</build> </project>

2.  生成Mapper文件

在src/main/resources下创建一个generatorConfig.xml文件,然后在终端命令行下执行  mvn mybatis-generator:generate 即可自动生成

具体参见  http://www.mybatis.org/generator/running/runningWithMaven.html

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <!-- http://www.mybatis.org/generator/configreference/xmlconfig.html --> <generatorConfiguration>
<classPathEntry location="C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.123.52.189:3306/oh_coupon"
userId="devdb"
password="d^V$0Fu!/6-&lt;">
</jdbcConnection> <javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <javaModelGenerator targetPackage="com.cjs.example.model" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
</javaModelGenerator> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.cjs.example.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator> <table tableName="tb_coupon" domainObjectName="Coupon" >
<ignoreColumn column="FRED" />
</table> </context>
</generatorConfiguration>

3.  application.yml配置

spring:
datasource:
url: jdbc:mysql://10.123.52.189:3306/oh_coupon
username: devdb
password: d^V$0Fu!/6-<
driver-class-name: com.mysql.jdbc.Driver
mybatis:
type-aliases-package: com.cjs.example.model
mapper-locations: classpath:mapper/*.xml
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
row-bounds-with-count: true
logging:
level:
com.cjs.example.dao: debug

4.  PageHelper用法

具体用法文档中写得比较详细了,这里只结合实际项目情况,给出演示:

参见

https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md

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

Mapper

 package com.cjs.example.dao;

 import com.cjs.example.model.Coupon;
import com.cjs.example.model.CouponExample;
import java.util.List; import com.github.pagehelper.PageRowBounds;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; @Repository
@Mapper
public interface CouponMapper { List<Coupon> selectByExample(CouponExample example); List<Coupon> selectByExample(CouponExample example, PageRowBounds pageRowBounds); }

Service

 package com.cjs.example.service.impl;

 import com.cjs.example.dao.CouponMapper;
import com.cjs.example.model.Coupon;
import com.cjs.example.model.CouponExample;
import com.cjs.example.service.CouponService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.PageRowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md
*/
@Service
public class CouponServiceImpl implements CouponService { @Autowired
private CouponMapper couponMapper; /**
* 静态方法startPage
*/
@Override
public List<Coupon> getCouponListByPage(CouponExample couponExample, Integer pageNum, Integer pageSize) {
// 在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
// 只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的
PageHelper.startPage(pageNum, pageSize);
return couponMapper.selectByExample(couponExample);
} /**
* 分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>
* 因为 public class Page<E> extends ArrayList<E> implements Closeable
*/
@Override
public Page<Coupon> getCouponListByPage1(CouponExample couponExample, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Coupon> list = couponMapper.selectByExample(couponExample);
if (null != list) {
Page<Coupon> page = (Page<Coupon>) list;
System.out.println(page);
return page;
}
return null;
} /**
* 用PageRowBounds
*/
@Override
public List<Coupon> getCouponListByPage2(CouponExample couponExample, Integer pageNum, Integer pageSize) {
PageRowBounds pageRowBounds = new PageRowBounds(pageNum, pageSize);
List<Coupon> couponList = couponMapper.selectByExample(couponExample, pageRowBounds); System.out.println(pageRowBounds.getTotal()); Page<Coupon> page = (Page<Coupon>) couponList;
System.out.println(page); return couponList;
} @Override
public Page<Coupon> getCouponListByPage3(CouponExample couponExample, Integer pageNum, Integer pageSize) {
Page<Coupon> page = PageHelper.startPage(pageNum, pageSize).doSelectPage(()->couponMapper.selectByExample(couponExample));
System.out.println(page);
return page;
} /**
* 方法参数
*/
@Override
public PageInfo<Coupon> getCouponListByPage4(CouponExample couponExample, Integer pageNum, Integer pageSize) {
PageInfo<Coupon> pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(()->couponMapper.selectByExample(couponExample));
System.out.println(pageInfo);
return pageInfo;
} /**
* PageInfo
*/
@Override
public PageInfo<Coupon> getCouponListByPage5(CouponExample couponExample, Integer pageNum, Integer pageSize) {
List<Coupon> list = couponMapper.selectByExample(couponExample);
if (null == list) {
return null;
}
PageInfo<Coupon> pageInfo = new PageInfo<>(list);
System.out.println(pageInfo);
return pageInfo;
} @Override
public Page<Coupon> getCouponListByPage6(CouponExample couponExample, Integer offset, Integer limit) {
return (Page<Coupon>) couponMapper.selectByExample(couponExample, new PageRowBounds(offset, limit));
}
}

Controller

 package com.cjs.example.controller;

 import com.cjs.example.domain.PageBean;
import com.cjs.example.model.Coupon;
import com.cjs.example.model.CouponExample;
import com.cjs.example.service.CouponService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("/coupon")
public class CouponController { @Autowired
private CouponService couponService; @RequestMapping("/list")
public List<Coupon> list() {
CouponExample example = new CouponExample();
return couponService.getCouponListByPage(example, 1, 5);
} @RequestMapping("/list2")
public List<Coupon> list2() {
CouponExample example = new CouponExample();
return couponService.getCouponListByPage2(example, 0, 5);
} @RequestMapping("/list3")
public List<Coupon> list3() {
CouponExample example = new CouponExample();
return couponService.getCouponListByPage3(example, 1, 5);
} @RequestMapping("/list4")
public PageInfo<Coupon> list4() {
CouponExample example = new CouponExample();
return couponService.getCouponListByPage4(example, 1, 5);
} @RequestMapping("/list5")
public PageInfo<Coupon> list5() {
CouponExample example = new CouponExample();
return couponService.getCouponListByPage5(example, 1, 5);
} /**
* Bootstrap Table
* http://bootstrap-table.wenzhixin.net.cn/documentation/
*/
@RequestMapping("/listPage")
public PageBean<Coupon> listPage(Integer offset, Integer limit) {
CouponExample example = new CouponExample();
example.or().andVendorIdEqualTo(10001L).andYnEqualTo(1);
Page<Coupon> page = couponService.getCouponListByPage6(example, offset, limit);
PageBean<Coupon> pageBean = new PageBean<>();
pageBean.setTotal(page.getTotal());
pageBean.setRows(page.getResult());
return pageBean;
}
}

5.  index.html

http://bootstrap-table.wenzhixin.net.cn/documentation/

 <!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Index</title> <link rel="stylesheet" href="/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/bootstrap-table/bootstrap-table.css"> <script src="/jquery/jquery-3.3.1.min.js"></script>
<script src="/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script src="/bootstrap-table/bootstrap-table.js"></script>
<script src="/bootstrap-table/locale/bootstrap-table-zh-CN.js"></script>
</head>
<body>
<div class="row">
<div class="col-xs-6">
<table id="table"></table>
</div>
</div> <script type="text/javascript">
/**
* http://bootstrap-table.wenzhixin.net.cn/documentation/
*/
$('#table').bootstrapTable({
sidePagination: 'server', // 服务器端分页
pagination: true,
pageNumber: 1,
pageSize: 10,
url: '/coupon/listPage',
columns: [{
field: 'id',
title: 'ID',
sortable: true
}, {
field: 'couponName',
title: '名称'
}, {
field: 'couponNum',
title: '数量'
}, {
field: 'couponAmount',
title: '金额'
}, {
field: 'releaseStartTime',
title: '开始时间'
}, {
field: 'releaseStartTime',
title: '结束时间'
}]
});
</script>
</body>
</html>

6.  分页效果

7.  工程结构及源码

代码上传至  https://github.com/chengjiansheng/cjs-mybatis-example.git

8.  小结

个人感觉,还是PageRowBoundsPageHelper.startPage(pageNum, pageSize).doSelectPage()比较实用

MyBatis 分页插件 PageHelper 使用的更多相关文章

  1. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  2. Mybatis分页插件PageHelper使用

    一. Mybatis分页插件PageHelper使用  1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...

  3. Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper

    引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...

  4. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  5. Mybatis分页插件PageHelper的实现

    Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...

  6. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  7. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  8. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  9. springmvc mybatis 分页插件 pagehelper

    springmvc mybatis 分页插件 pagehelper 下载地址:pagehelper 4.2.1 , jsqlparser 0.9.5 https://github.com/pagehe ...

  10. MyBatis 分页插件PageHelper 后台报错

    今天遇到一个问题,使用MyBatis 分页插件PageHelper 进行排序分页后,能正常返回正确的结果,但后台却一直在报错 net.sf.jsqlparser.parser.ParseExcepti ...

随机推荐

  1. SpringBoot使用Graylog日志收集

    本文介绍SpringBoot如何使用Graylog日志收集. 1.Graylog介绍 Graylog是一个生产级别的日志收集系统,集成Mongo和Elasticsearch进行日志收集.其中Mongo ...

  2. iOS 轻击、触摸和手势的检测

    一.检测捏合手势( UIPinchGestureRecognizer):  //设定一个实例变量存储手指之间的其起始距离 @property (assign, nonatomic) CGFloat i ...

  3. 【转载】JAVA基础复习与总结<三> Object类的常用方法

    Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类.这里主要总结Object类中的三个常用方法:toString().equ ...

  4. CodeForces - 777B Game of Credit Cards 贪心

    题目链接: http://codeforces.com/problemset/problem/777/B 题目大意: A, B玩游戏,每人一串数字,数字不大于1000,要求每人从第一位开始报出数字,并 ...

  5. 二维数组的最大子数组和 时间复杂度:O(n的四次方)

    先上代码 小组成员:高达,李奔 package 三月二十一号; import java.io.BufferedReader; import java.io.FileReader; import jav ...

  6. 1、初识Java

    1.计算机发展过程 2.Java简史 lSUN公司是一家什么样的公司? 美国SUN(Stanford University Network)公司 在中国大陆的正式中文名为“太阳计算机系统(中国)有限公 ...

  7. vue的登陆验证及返回登录前页面实现

    一.路由配置部分如下所示, 导出路由示例 let router = new VueRouter({ routes: [ // 登陆 { name: 'login', path: '/login', c ...

  8. 【原创】C# API 未能创建 SSL/TLS 安全通道 问题解决

    在调用执行API之前添加以下代码就行了 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

  9. 二、油泼面(Oil spill noodle)

    油泼面 油泼面是陕西传统的特色面食之一,起源于周代,并以咸阳油泼面最为著名,有鲜香味.酸辣味.香辣味. 油泼面是一种很普通的面食制作方法,将手工制作的面条在开水中煮熟后捞在碗里,将葱花碎.花椒粉.盐等 ...

  10. [VUE]object.defineProperty的基本使用

    1.object.defineProperty 给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象 语法: Object.defineProperty(参数1,参数2,参数3) 参 ...