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シールドの右クリックメニューと左クリック入力機能の例

推薦する

JS の 3 つの主要な問題、非同期性とシングルスレッドについて簡単に説明します。

目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...

Nginx に React プロジェクトをデプロイする方法の例

テストプロジェクト: react-demo react-demo プロジェクトをサーバーにクローンし...

一般的な Linux ツール vi/vim の完全版

なぜvimを学ぶのかLinuxには多数の設定ファイルがあるため、Linuxには多くのテキスト処理ツー...

1 つの記事で Node.js の非同期プログラミングを学ぶ

目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...

VMware 15.5 バージョンのインストール Windows_Server_2008_R2 システム チュートリアル図

1. VMware 15.5から新しい仮想マシンを作成する1. VMware を開き、ホームページで...

Vueは複数のカウントダウンを同時に設定する機能を実装しています

この記事の例では、複数のカウントダウンを同時に設定するためのVueの具体的なコードを参考までに共有し...

Linux でショートカットアイコンを設定する方法

序文Linux でショートカットを作成すると、アプリケーションをより速く開くことができます。ここで、...

HTML+CSS でハートビートの特殊効果を作成する

今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...

JavaScript ファイルの読み込みとブロックの問題: パフォーマンス最適化のケーススタディ

まず質問させてください。HTML ページを作成するときに、外部から JS ファイルをインポートする場...

DIV共通属性コレクション

1. 物件リストコードをコピーコードは次のとおりです。色: #999999 テキスト色フォントファミ...

JavaScript PromiseとAsync/Awaitの詳細な説明

目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

HTMLページの文字セットを指定する2つの方法

1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...

Docker を使用して MySQL および Redis サービスをデプロイする方法

目次Dockerを使用してMySQLサービスをデプロイする方法DockerでRedisサービスをデプ...