目次
1. アイデア
2. メイン ロジック
3. 手順
ホームページ Java &#&チュートリアル Springboot+mybatisフレームワークでPageHelperを使用する方法

Springboot+mybatisフレームワークでPageHelperを使用する方法

May 12, 2023 pm 03:55 PM
mybatis springboot pagehelper

1. アイデア

ページングに必要なすべてのコンテンツをエンティティ クラスに配置する

データのページングに必要なエンティティ クラス!ページ番号、ページ サイズ、エントリの総数、ページの総数、開始行が含まれます

pagehelpr はこのクラス pageInfo を提供します。自分で作成する必要はありません

2. メイン ロジック

select * from table name制限開始行、複数のデータを表示

#ページnはページごとに5つのデータを表示

select * テーブル名制限より ( n-1)*5,5

#各ページに表示されるアイテムの数 pageSize

3

# にあるアイテムの数total

total

テーブル名からカウント (*) を選択

#総ページ数

pages

pages=total% PagesSize==0?total/pgeSize:total/pageSize 1 ;

#現在のページ

pageNum

3. 手順

1. pagehelper の依存関係を導入します

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>
ログイン後にコピー
#pagehelper分页插件配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
ログイン後にコピー

2.bean エンティティ クラス

ユーザー エンティティ:

package com.qianfeng.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
 
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Register {
    private Integer id;
 
    private String userName;
 
    private String passWord;
 
    private String rePassWord;
 
    private String idCard;
    private String gender;
 
}
ログイン後にコピー

フロントエンド エンティティ クラスを返します: 見つかったデータとページング データを含みます

package com.qianfeng.bean;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
 
import java.util.List;
 
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RegPage {
    private PageInfo pageInfo;
    private List<Register> registers;
}
ログイン後にコピー

2.マッパー層:

package com.qianfeng.mapper;
 
import com.qianfeng.bean.Register;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
@Mapper
public interface PageDao {
    List<Register> getAll(Integer startRow,Integer pageSize);
    long getCount();
}
ログイン後にコピー

3.サービス層:

package com.qianfeng.service;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
 
public interface RegService {
    RegPage getAll(PageInfo pageInfo);
}
ログイン後にコピー

4.serviceImpl:

package com.qianfeng.service.serviceImpl;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
import com.qianfeng.bean.Register;
import com.qianfeng.mapper.PageDao;
import com.qianfeng.service.RegService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Service
public class RegServiceImpl implements RegService {
    @Autowired
    private PageDao pageDao;
    @Override
    public RegPage getAll(PageInfo pageInfo) {
        List<Register> all = pageDao.getAll(pageInfo.getStartRow(), pageInfo.getPageSize());//分页后的数据
        long count = pageDao.getCount();//总记录条数
        pageInfo.setTotal(count);
        //总页数
        int pages= (int) (pageInfo.getTotal()%pageInfo.getPageSize()==0?pageInfo.getTotal()/pageInfo.getPageSize():pageInfo.getTotal()/pageInfo.getPageSize()+1);
        pageInfo.setPages(pages);
 
        RegPage regPage = new RegPage();
        regPage.setPageInfo(pageInfo);
        regPage.setRegisters(all);
        return regPage;
 
    }
}
ログイン後にコピー

5.ハンドラー層:

package com.qianfeng.handler;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
import com.qianfeng.service.RegService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class RegHandler {
    @Autowired
    private RegService regService;
    @RequestMapping("/page/{pageNum}")
    public RegPage regPage(@PathVariable("pageNum") Integer pageNum){
        System.out.println(".........");
        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(pageNum);
        pageInfo.setPageSize(3);
        pageInfo.setStartRow((pageNum-1)*pageInfo.getPageSize());
        System.out.println("startRow" + pageInfo.getStartRow());
        return regService.getAll(pageInfo);
    }
}
ログイン後にコピー

6.mapper.xml

<?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.qianfeng.mapper.PageDao">
    <select id="getAll" resultType="com.qianfeng.bean.Register">
        select * from m_register limit #{startRow},#{pageSize}
    </select>
    <select id="getCount" resultType="java.lang.Long">
        select count(*) from m_register
    </select>
</mapper>
ログイン後にコピー

7.application.yaml

spring:
  datasource:
    url: jdbc:mysql:///map?serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
 
    druid:
      aop-patterns: com.qianfeng.*  #监控SpringBean
      filters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)
 
      stat-view-servlet:   # 配置监控页功能
        enabled: true
        login-username: admin
        login-password: admin
        resetEnable: false
 
      web-stat-filter:  # 监控web
        enabled: true
        urlPattern: /*
        exclusions: &#39;*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*&#39;
      filter:
        stat:    # 对上面filters里面的stat的详细配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
# mybatis的配置规则
mybatis:
  #config-location: classpath:mapper/mybatis-config.xml
  mapper-locations: classpath:mapper/*
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#      static-locations: [classpath:/haha/]  # 静态资源路径自定义
ログイン後にコピー

8.application,properties

spring.main.allow-circular-references=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
ログイン後にコピー

PageInfo クラスについて、ソース コードは次のとおりです。 #

public class PageInfo implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}
ログイン後にコピー
ディレクトリ構造:

Springboot+mybatisフレームワークでPageHelperを使用する方法

以上がSpringboot+mybatisフレームワークでPageHelperを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iBatis と MyBatis: どちらがあなたにとって優れていますか? iBatis と MyBatis: どちらがあなたにとって優れていますか? Feb 19, 2024 pm 04:38 PM

iBatis と MyBatis: どちらを選択するべきですか?はじめに: Java 言語の急速な発展に伴い、多くの永続化フレームワークが登場しました。 iBatis と MyBatis は 2 つの人気のある永続化フレームワークであり、どちらもシンプルで効率的なデータ アクセス ソリューションを提供します。この記事では、iBatis と MyBatis の機能と利点を紹介し、適切なフレームワークを選択するのに役立つ具体的なコード例をいくつか示します。 iBatis の紹介: iBatis はオープンソースの永続化フレームワークです。

MyBatis でバッチ削除操作を実装するさまざまな方法 MyBatis でバッチ削除操作を実装するさまざまな方法 Feb 19, 2024 pm 07:31 PM

MyBatis でバッチ削除ステートメントを実装するいくつかの方法には、特定のコード例が必要です。近年、データ量の増加により、バッチ操作がデータベース操作の重要な部分になっています。実際の開発では、データベース内のレコードを一括で削除する必要が生じることがよくあります。この記事では、MyBatis でバッチ削除ステートメントを実装するいくつかの方法に焦点を当て、対応するコード例を示します。 foreach タグを使用してバッチ削除を実装します。MyBatis は、セットを簡単に横断できる foreach タグを提供します。

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

JPAとMyBatisの機能・性能の比較分析 JPAとMyBatisの機能・性能の比較分析 Feb 19, 2024 pm 05:43 PM

JPA と MyBatis: 機能とパフォーマンスの比較分析 はじめに: Java 開発では、永続化フレームワークが非常に重要な役割を果たします。一般的な永続化フレームワークには、JPA (JavaPersistenceAPI) や MyBatis などがあります。この記事では、2 つのフレームワークの機能とパフォーマンスを比較分析し、具体的なコード例を示します。 1. 機能の比較: JPA: JPA は JavaEE の一部であり、オブジェクト指向のデータ永続化ソリューションを提供します。アノテーションまたはXが渡されます

MyBatis バッチ削除ステートメントの使用方法の詳細な説明 MyBatis バッチ削除ステートメントの使用方法の詳細な説明 Feb 20, 2024 am 08:31 AM

MyBatis バッチ削除ステートメントの使用方法の詳細な説明には、特定のコード例が必要です はじめに: MyBatis は、豊富な SQL 操作機能を提供する優れた永続層フレームワークです。実際のプロジェクト開発では、データを一括で削除する必要がある場面に遭遇することがよくあります。この記事では、MyBatis のバッチ削除ステートメントの使用方法を詳しく紹介し、具体的なコード例を添付します。使用シナリオ: データベース内の大量のデータを削除する場合、削除ステートメントを 1 つずつ実行するのは非効率です。このとき、MyBatisの一括削除機能が利用できます。

MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには? MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには? Feb 23, 2024 pm 08:13 PM

MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには?開発プロセス中、効率的なデータ アクセスは常にプログラマーの焦点の 1 つでした。 MyBatis のような永続層フレームワークの場合、キャッシュはデータ アクセス効率を向上させるための重要な方法の 1 つです。 MyBatis は、一次キャッシュと二次キャッシュという 2 つのキャッシュ メカニズムを提供しており、一次キャッシュはデフォルトで有効になっています。この記事では、MyBatis の 1 次キャッシュのメカニズムを詳細に紹介し、読者の理解を深めるために具体的なコード例を示します。

MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 Feb 25, 2024 pm 12:30 PM

MyBatis のキャッシュ メカニズムの分析: 1 次キャッシュと 2 次キャッシュの違いと応用 MyBatis フレームワークでは、キャッシュはデータベース操作のパフォーマンスを効果的に向上させることができる非常に重要な機能です。そのうち、一次キャッシュと二次キャッシュは、MyBatis でよく使用される 2 つのキャッシュ メカニズムです。この記事では、一次キャッシュと二次キャッシュの違いと用途を詳細に分析し、具体的なコード例を示して説明します。 1. レベル 1 キャッシュ レベル 1 キャッシュはローカル キャッシュとも呼ばれ、デフォルトで有効になっており、オフにすることはできません。 1次キャッシュはSqlSesです

MyBatis Generator 設定パラメータの解釈とベスト プラクティス MyBatis Generator 設定パラメータの解釈とベスト プラクティス Feb 23, 2024 am 09:51 AM

MyBatisGenerator は、MyBatis が公式に提供するコード生成ツールで、開発者がデータベース テーブル構造に準拠した JavaBeans、Mapper インターフェイス、および XML マッピング ファイルを迅速に生成するのに役立ちます。コード生成に MyBatisGenerator を使用するプロセスでは、構成パラメーターの設定が重要です。この記事では、構成パラメータの観点から開始し、MyBatisGenerator の機能を詳しく説明します。

See all articles