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

推薦する

React で setInterval 関数を使用する例

この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...

Docker イメージ管理の一般的な操作コード例

ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...

MySQL 起動時に「サーバーは PID ファイルを更新せずに終了しました」というエラーが報告される理由の詳細な分析

多くの人が MySQL の起動時にこのエラーに遭遇しています。まず、このエラーの前提は、サービス ス...

Vue の計算プロパティとリスナーの使用の概要

1. 計算プロパティとリスナー1.1 計算プロパティ <!DOCTYPE html> &...

jsプロキシの原理の詳細な説明

目次プロキシモードとは何ですか?実例を紹介例を使ってプロキシモデルの定義を理解するプロキシとはget...

Uniappの小規模プログラム開発経験

1. 新しいUIプロジェクトを作成するまず、私たちの UI は ColorUI に基づいています。C...

ウェブページを最適化してメモリとCPUの使用率を削減

一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...

MySQL インデックスの原理と最適化の詳細な説明

序文この記事は Meituan の大物によって書かれました。とても素晴らしいので、皆さんと共有したい...

JavaScript で動的な QML オブジェクトを作成する方法

1. オブジェクトを動的に作成するJavaScript からオブジェクトを動的に作成する方法は 2 ...

Dockerはrabbitmqのサンプルコードをインストールして実行します

イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...

JS 内の Json 文字列 + Cookie + ローカルストレージ

目次1.Json文字列1.1Json構文1.2 例2. クッキー2.1 使い方は? 3. ローカルス...

Linux でマウントされたファイルシステムの種類を表示する方法

序文ご存知のとおり、Linux は ext4、ext3、ext2、sysfs、securityfs、...

MySQL初心者のための基本操作のまとめ

図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...

HTML初心者や初級者向けの提案。専門家は無視してかまいません。

感想:私はバックエンド開発者です。静的 (HTML) ページを取得すると、ページ構造と命名規則が極端...

CSSは、入力ボックスのフローティングテキスト効果を実現するために、placeholder-shown疑似クラスを使用します。

この記事では、:placeholder-shown 疑似クラスを使用して、純粋な CSS で浮動疑問...