加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

MyBatis 分页插件 PageHelper 使用

发布时间:2020-12-14 18:05:03 所属栏目:大数据 来源:网络整理
导读:1.? 引入Maven依赖 1 ? xml version="1.0" encoding="UTF-8" ? 2 project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.ap

1.? 引入Maven依赖

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     modelVersion>4.0.0</ 5 
 6     groupId>com.cjs.example 7     artifactId>cjs-mybatis-example 8     version>0.0.1-SNAPSHOT 9     packaging>jar10 
11     name12     description></13 
14     parent15         >org.springframework.boot16         >spring-boot-starter-parent17         >2.0.3.RELEASE18         relativePath/> <!-- lookup parent from repository -->
19     20 
21     properties22         project.build.sourceEncoding>UTF-823         project.reporting.outputEncoding24         java.version>1.825     26 
27     dependencies28         dependency29             30             >spring-boot-starter-web31         32         33             34             >spring-boot-starter-thymeleaf35         36         37             >org.mybatis.spring.boot38             >mybatis-spring-boot-starter39             >1.3.240         41         42             >com.github.pagehelper43             >pagehelper-spring-boot-starter44             >1.2.545         46 
47         48             >mysql49             >mysql-connector-java50             scope>runtime51         52         
53         54             55             >spring-boot-starter-test56             >test57         58     59 
60     build61         plugins62             plugin63                 64                 >spring-boot-maven-plugin65             66 
67              http://www.mybatis.org/generator/configreference/xmlconfig.html 68              http://www.mybatis.org/generator/running/runningWithMaven.html 69              mvn mybatis-generator:generate 70              mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 71             72                 >org.mybatis.generator73                 >mybatis-generator-maven-plugin74                 >1.3.775             76         77     78 
79 
80 project>

2.? 生成Mapper文件

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

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

<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" 6  7 
 8 generatorConfigurationclassPathEntry 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"12         jdbcConnection driverClass="com.mysql.jdbc.Driver"
13                         connectionURL="jdbc:mysql://10.123.52.189:3306/oh_coupon"
14                         userId="devdb"
15                         password="d^V$0Fu!/6-&lt;"jdbcConnection17 
javaTypeResolver 19             property ="forceBigDecimals" value="false" 20         javaTypeResolver21 
javaModelGenerator targetPackage="com.cjs.example.model" targetProject="src/main/java"23             ="enableSubPackages"24             ="trimStrings"="true" 25         javaModelGenerator27         sqlMapGenerator ="mapper"  targetProject="src/main/resources"28             29         sqlMapGenerator30 
javaClientGenerator type="XMLMAPPER" targetPackage="com.cjs.example.dao"32             33         javaClientGenerator34 
table tableName="tb_coupon" domainObjectName="Coupon" 36             ignoreColumn column="FRED" 37         table38 
39     context40 >

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;
 2 
 3 import com.cjs.example.model.Coupon;
 4  com.cjs.example.model.CouponExample;
 5  java.util.List;
 6 
 7  com.github.pagehelper.PageRowBounds;
 org.apache.ibatis.annotations.Mapper;
 9  org.springframework.stereotype.Repository;
11 @Repository
12 @Mapper
13 public interface CouponMapper {
14 
15     List<Coupon> selectByExample(CouponExample example);
16 
17     List<Coupon> selectByExample(CouponExample example,PageRowBounds pageRowBounds);
18     
19 }

Service

  1  com.cjs.example.service.impl;
  2 
  3  com.cjs.example.dao.CouponMapper;
  4   5   6  com.cjs.example.service.CouponService;
  7  com.github.pagehelper.Page;
  8  com.github.pagehelper.PageHelper;
  9  com.github.pagehelper.PageInfo;
 10  11  org.springframework.beans.factory.annotation.Autowired;
 12  org.springframework.stereotype.Service;
 13 
 14  15 
 16 /**
 17  * https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md
 18  */
 19 @Service
 20 class CouponServiceImpl implements CouponService {
 21 
 22     @Autowired
 23     private CouponMapper couponMapper;
 24 
 25      26      * 静态方法startPage
 27       28     @Override
 29     public List<Coupon> getCouponListByPage(CouponExample couponExample,Integer pageNum,Integer pageSize) {
 30         //  在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
 31           只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的
 32         PageHelper.startPage(pageNum,pageSize);
 33         return couponMapper.selectByExample(couponExample);
 34     }
 35 
 36      37      * 分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>
 38      * 因为  public class Page<E> extends ArrayList<E> implements Closeable
 39       40  41     public Page<Coupon> getCouponListByPage1(CouponExample couponExample,1)"> 42  43         List<Coupon> list = 44         if (null != list) {
 45             Page<Coupon> page = (Page<Coupon>) list;
 46             System.out.println(page);
 47              page;
 48         }
 49         return null;
 50  51 
 52      53      * 用PageRowBounds
 54       55  56      getCouponListByPage2(CouponExample couponExample,1)"> 57         PageRowBounds pageRowBounds = new PageRowBounds(pageNum,1)"> 58         List<Coupon> couponList = couponMapper.selectByExample(couponExample,pageRowBounds);
 59 
 60         System.out.println(pageRowBounds.getTotal());
 61 
 62         Page<Coupon> page = (Page<Coupon>) couponList;
 63         System.out.println(page);
 64 
 65          couponList;
 66  67 
 68  69      getCouponListByPage3(CouponExample couponExample,1)"> 70         Page<Coupon> page = PageHelper.startPage(pageNum,pageSize).doSelectPage(()->couponMapper.selectByExample(couponExample));
 71  72          73  74 
 75      76      * 方法参数
 77       78  79     public PageInfo<Coupon> getCouponListByPage4(CouponExample couponExample,1)"> 80         PageInfo<Coupon> pageInfo = PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(()-> 81         System.out.println(pageInfo);
 82          pageInfo;
 83  84 
 85      86      * PageInfo
 87       88  89      getCouponListByPage5(CouponExample couponExample,1)"> 90         List<Coupon> list = 91         null == 92              93  94         PageInfo<Coupon> pageInfo = new PageInfo<>(list);
 95  96          97  98 
 99 100      getCouponListByPage6(CouponExample couponExample,Integer offset,Integer limit) {
101         return (Page<Coupon>) couponMapper.selectByExample(couponExample, PageRowBounds(offset,limit));
102 103 }

Controller

 com.cjs.example.controller;
 com.cjs.example.domain.PageBean;
10  org.springframework.web.bind.annotation.RequestMapping;
 org.springframework.web.bind.annotation.RestController;
12 
15 @RestController
16 @RequestMapping("/coupon")
17 class CouponController {
18 
19 20      CouponService couponService;
22     @RequestMapping("/list"23      list() {
24         CouponExample example =  CouponExample();
return couponService.getCouponListByPage(example,1,5);
26 27 
28     @RequestMapping("/list2"29      list2() {
30         CouponExample example = return couponService.getCouponListByPage2(example,1)">32 33 
34     @RequestMapping("/list3"35      list3() {
36         CouponExample example = return couponService.getCouponListByPage3(example,1)">38 39 
40     @RequestMapping("/list4"41      list4() {
42         CouponExample example = 43         return couponService.getCouponListByPage4(example,1)">44 45 
46     @RequestMapping("/list5"47      list5() {
48         CouponExample example = 49         return couponService.getCouponListByPage5(example,1)">50 51 
52 
53     54      * Bootstrap Table
55      * http://bootstrap-table.wenzhixin.net.cn/documentation/
56      57     @RequestMapping("/listPage"public PageBean<Coupon> listPage(Integer offset,1)">59         CouponExample example = 60         example.or().andVendorIdEqualTo(10001L).andYnEqualTo(161         Page<Coupon> page = couponService.getCouponListByPage6(example,offset,limit);
62         PageBean<Coupon> pageBean = new PageBean<>();
63         pageBean.setTotal(page.getTotal());
64         pageBean.setRows(page.getResult());
65          pageBean;
66 67 }

5.? index.html

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

DOCTYPE htmlhtml lang="zh"headmeta charset="UTF-8" 5     title>Indexlink rel="stylesheet" href="/bootstrap-3.3.7-dist/css/bootstrap.min.css"="/bootstrap-table/bootstrap-table.css" 9 
10     script src="/jquery/jquery-3.3.1.min.js"script="/bootstrap-3.3.7-dist/js/bootstrap.min.js"="/bootstrap-table/bootstrap-table.js"13     ="/bootstrap-table/locale/bootstrap-table-zh-CN.js"14 body16     div ="row"="col-xs-6"18             ="table"19         div22     ="text/javascript"23         /**
24          * http://bootstrap-table.wenzhixin.net.cn/documentation/
25          26         $('#table).bootstrapTable({
27             sidePagination: server,//  服务器端分页
28             pagination: true29             pageNumber: 130             pageSize: 1031             url: /coupon/listPage32             columns: [{
33                 field: id34                 title: ID35                 sortable: true
36             },{
37 couponName38 名称'
39 40 couponNum41 数量42 43 couponAmount44 金额45 46 releaseStartTime47 开始时间48 49 50 结束时间51             }]
52         });
html>

6.? 分页效果

7.? 工程结构及源码

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

8.? 小结

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

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读