mybatis-plusページングパラメータが渡された後、SQLのwhere条件にはページング情報操作の制限がありません

mybatis-plusページングパラメータが渡された後、SQLのwhere条件にはページング情報操作の制限がありません

2時間近くかけて、さまざまな方法を試しました。後で、whereでフィルタリングした後のデータ量が1ページのデフォルトの数に達しなかったため、whereに制限情報を表示しなかっただけだと思いました。試してみたところ、確かにそうでした。 。 。作者はプログラムを本当に十分に賢くしましたが、この知能のせいで 2 時間を無駄にしてしまいました。 。 。それとも私があまりにも愚かなだけなのかもしれません...

しかし奇妙なことに、QueryWrapper パラメータを設定しないと、where 以降のページング制限が再び表示されます。著者が何を考えているのか分かりません。 。 。

詳細についてはコードを参照してください:

@オーバーライド
 パブリック PageUtils queryPage(Map<String, Object> パラメータ) {
 
  IPage<OrderEntity> ページ = this.page(
    新しいクエリ<OrderEntity>().getPage(params)、
    新しい QueryWrapper<OrderEntity>().eq(!UtilString.isNull(params.get("user_id"))
      ,"user_id", params.get("user_id"))
  );
 
  新しい PageUtils(page) を返します。
 }

録画の目的は、私のような特別な状況に遭遇した友人たちがすぐにこの難関を回避できることを願うことです。時間は貴重です。おやすみなさい^.^

最後に公式文書を添付します。より体系的に文書を読んでいただければ幸いです。

https://mp.baomidou.com/guide/dynamic-datasource.html

補足知識:リバースエンジニアリングで生成されたmybatisplusページング方式の限界失敗の落とし穴を記録する

問題を解決する前に、インターネットや公式サイトで解決策を探しましたが、解決策がなかったので、この記事を書きました。

後から来る学生は開発時に回り道を避けることができる

コントローラー層

 @リクエストマッピング("/リスト")
 パブリック R リスト(@RequestParam Map<String, Object> パラメータ){
  PageUtils ページ = categoryService.queryPage(params);
  R.ok() を返します。put("page", page);
 }

渡されるパラメータは図の通りです

サーバーインターフェース

パブリックインターフェースCategoryServiceはIService<CategoryEntity>を拡張します。
 
 PageUtils クエリページ(Map<String, Object> パラメータ);
 }

問題と解決策(これはインターネット上の解決策であり、解決されていません...)

ただし、クエリを実行するとページングが有効にならず、クエリ結果はテーブル内のすべてのデータになります。 pom が正しい場合は、ページング インターセプターが spring に挿入されているかどうかを確認します。

com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor をインポートします。
org.springframework.context.annotation.Bean をインポートします。
org.springframework.context.annotation.Configuration をインポートします。
 
@構成
パブリッククラスmybatisPlusConfig {
 @ビーン
 パブリック PaginationInterceptor paginationInterceptor(){
  新しい PaginationInterceptor() を返します。
 }
}

上記はインターネットで見つけた解決策です。これをプロジェクトにコピーしたところ、方法が古くて機能しないことがわかりました。

後で分かったのですが、問題はmybatisplusのバージョンが高すぎたためサポートされていなかったのです。

これはMavenで参照したバージョンです

次に、インターネットでインターセプターの方法を検索します

この問題は新しいページング方法を使用することで解決されます

問題の鍵は、根本的に問題を見つける方法です。私の場合は、問題を見つけずに今日 1 時間か 2 時間を無駄にしないように、問題を見つける方法を振り返りました。まずは公式ドキュメントを参照します。

公式のサンプルコードをチェックしてください! ! ! ! ! !

以下はgiteeで見つけたリバースエンジニアリングです

プロジェクトのスケジュールが非常にタイトで、同僚の古いフレームワーク コードを見ると頭が痛くなるので、リバース エンジニアリングを選択して、軽量フレームワークを自分で構築するのは素晴らしいことではないでしょうか。

プロジェクトでは springcloud マイクロサービスを使用しているため、私はシステムの責任を負い、好きなことを何でもできます。

ここで使用するリバースエンジニアリングはgiteeのrenren-generatorフレームワークです。

彼が生成したコードにはページングメソッドのインターセプターがありません。公式サイトの方法も古くなっていることがわかり、非常に落とし穴です。

私が皆さんに共有したいのは、mybatis-plus ページングと、制限のない SQL where 条件によるページング情報操作に関する上記の記事だけです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • Mybatisタグの使用場所
  • Mybatis plus 括弧を追加する場所
  • Mybatisplus where QueryWrapper plus 括弧で囲まれたネストされたクエリメソッド
  • mybatis where-if で大文字の AND、OR を認識できない問題を解決する
  • Mybatis 動的 SQL if、choose、where、set、trim、foreach タグの例の詳細な説明
  • Mybatisのwhereタグの使用の概要

<<:  OCSP を有効にすると、https 証明書の検証効率が向上し、Let's Encrypt SSL 証明書へのアクセスが遅くなる問題が解決されます。

>>:  HTMLシールドの右クリックメニューと左クリック入力機能の例

推薦する

HTML入力ファイルコントロールはアップロードされるファイルの種類を制限します

入力ファイルの HTML コントロールを Web ページに追加します。 <input id=&...

LeetCode の SQL 実装 (184. 部門内で最も高い給与)

[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...

Zabbixについて管理者ログインパスワードを忘れた場合、パスワードをリセットする

Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...

Vue + Axios リクエストインターフェース方式とパラメータ渡し方式の詳しい説明

目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...

HTML+SassはHambergurMenu(ハンバーガーメニュー)を実装します

先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...

HTMLはシンプルで美しいログインページを作成します

まずは見てみましょう。 HTML ソースコード: XML/HTML コードコンテンツをクリップボード...

MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明

目次インストール環境の説明MySQLデータベースサービスをインストールするメインライブラリを構成する...

docker イメージのプル速度が遅い問題の解決策

現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...

IE6/7 における a.getAttribute(href,2) 問題の分析と解決

簡単な説明<br />IE6および7では、一般的なaタグ(HTMLで記述され、DOM操作...

シェルスクリプト nginx 自動化スクリプト

このスクリプトは、nginxの起動、停止、再起動の操作を満たすことができます。 #!/bin/bas...

Linux のソフトリンクとハードリンクの詳細な説明

目次1. ファイルとディレクトリの基本的な保存2. Inコマンドの紹介(1)lnコマンドの基本情報を...

Dockerでk8sをデプロイする方法

K8s k8s はクラスターです。クラスターには複数の名前空間があります。名前空間の下には複数のポッ...

HTML フレーム、Iframe、フレームセットの違い

10.4.1 フレームセットとフレームの違い まず、フレームセットとフレームの違いについて説明します...

Windows システムで MySQL が起動しない場合の一般的な解決策

MySQL 起動エラーWindows 10 に MySQL をインストールする前は、net star...