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

推薦する

MySQL の 4 つのトランザクション分離レベルの詳細な説明

この実験のテスト環境: Windows 10+cmd+MySQL5.6.36+InnoDB 1. ト...

MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要

非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

ピクセルを包括的なブランド体験に変えるヒント

編集者:この記事では、インタラクティブデザインがブランドコミュニケーションチェーン全体で果たすべき役...

XHTMLコードの一般的なアプリケーション問題をまとめる

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

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

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

よくある MySQL テーブル設計エラーの概要

目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...

ウェブページのドロップダウンリストとdivレイヤーのカバーの問題を選択する

HTML の select 要素に関する質問は、さまざまな場所で提起されています。最近のプロジェクト...

MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

IE で ClearType をオンにした後の透明フォントの問題の解決方法

IE で ClearType をオンにした後に発生する透明フォントの問題を解決するには、透明要素に背...

Bootstrapグリッドの垂直および水平配置の詳細な説明

目次1. Bootstrap グリッドレイアウト2. 垂直方向の配置2.1 行タグの垂直方向の配置を...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

モバイル アプリのユーザー インターフェース設計に関する 10 のヒント

ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...

ゲーム着物メモ問題の簡単な分析

本日、ゲームを再起動した後、バックアップしたデータをターゲットデータベースにインポートできないことが...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...