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

推薦する

Vue.js ドラッグ可能なテキストボックスコンポーネントの使用方法の詳細な説明

目次コンポーネントの登録コンポーネントの追加ソースコードドラッグ可能なテキスト ボックスでは、ユーザ...

MySQLシリーズ15 MySQL共通設定とパフォーマンスストレステスト

1. 一般的なMySQLの設定以下のすべての構成パラメータは、32G のメモリを搭載したサーバーに基...

CSS属性のマージンの理解について話す

1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...

優れた Web UI ライブラリ/フレームワーク 10 選

1. ITミルツールキットIT Mill Toolkit は、リッチ Web アプリケーション用のウ...

MySQL で遅い SQL 文を見つける方法

MySQL で遅い SQL ステートメントを見つけるにはどうすればよいでしょうか?これは、多くの人を...

ウィンドウとLinuxプロジェクトを展開する際のLinuxファイルパスに問題はありません

長い間ブログを書いていませんでした。先週、プロジェクトをテストしたところ、いくつかのバグが見つかりま...

MySQL count(1)、count(*)、count(field)の違い

目次1. COUNTの初見2. COUNT(フィールド)、COUNT(定数)、COUNT(*)の違い...

Ubuntuデュアルシステムが起動時に停止する問題の解決方法の詳細な説明

起動時に Ubuntu デュアル システムが停止する問題の解決方法 (Ubuntu 16.04 およ...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

Ubuntu にグラフィック ドライバーが正常にインストールされたかどうかを確認する方法

次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...

Reactの3つの主要属性における状態の使用の詳細な説明

目次クラスコンポーネント機能コンポーネントsetStateの落とし穴React では多くの場所でデー...

CSS3 カウントダウン効果

成果を達成する実装コードhtml <div クラス = 'ラッパー'> ...

Ubuntu 20.04でAliソースを変更する方法

なお、この記事では、単に 20.04 ソースに変更する方法を説明するのではなく、20.04 に基づい...