blog

Javaプロジェクト実践:ページング・クエリー関数

それでは、今日の勉強を始めましょう:\n\nまず、ページングの概要\n現在、ネットワーククエリデータでは、キーワードクエリを介して、1回のクエリは、多くのデータになります。\n例えば、ブラウザで "劉...

Apr 16, 2020 · 4 min. read
シェア

今日は劉暁愛がジャワ島を独学して107日目。

ご視聴ありがとうございました。

それでは、今日の勉強を始めましょう:

I. ページングの概要

現在、ウェブ上でデータを検索する場合、キーワード検索で一度に多くのデータを得ることができます。

例えば、ブラウザで "Liu Xiao-ai "と検索すると、12万件がヒットします。

一度にすべてを表示するのはあまりにも難しく、そのためにブラウザがデータをレンダリングし続ける必要があり、ブラウザにも大きな負担がかかります。

この問題を解決するために、ページングが導入されました:

現在、サイトは一般的にクエリ関数に関与している、3つの重要なパラメータを含むページングについて、ページングに使用されます:

  • 現在のページのページ番号 pageNum.
  • 1ページに表示されるデータ項目の数 pageSize.
  • データの各ページの開始インデックス startCount。

フロントエンドは、現在のページコード番号とページあたりのデータバーの数としてデータを取得することができます。

また、データベースへのアクセスには、データの開始インデックスと1ページあたりのデータ項目数が必要です。

だから、そのパターンを見つけてください:

データベースにはいくつもの関連データがあり、1ページに8つのデータが表示されると仮定すると

  • ページ1:インデックス・ビット0から始まる8小節のデータ。
  • 2ページ目:インデックス・ビット8から始まる8小節のデータ。
  • 3ページ目:インデックス・ビット16から始まる8小節のデータ。

このことから、次のようなパターンが考えられます:

ページあたりの初期インデックス・ビット = * ページ上のデータ量、したがって、キーワード limt を使用して、記述する SQL 文を決定します。

アイデアが分析されたら、コードを書き始めることができます。

フロントエンドがリクエストを送信

そのうちの一つは、データを死ぬまで書き込む静的ページについてです。こちら側のメインは、ページングの機能の実装を一時的に考えるだけです。

表示されている各ページ番号にクリック・イベントをバインドし、対応する関数を getPageData() とします。

getPageData(pageNum,pageSize)に2つのパラメータを指定します:

  • pageNum 現在のページのページ番号。
  • pageSize 現在のページのデータ項目数。

イベントが正常にバインドされると、対応するページ番号がクリックされるとすぐにリクエストがサーバーに送信されます:

  • リクエストはバックエンドのRouteServletに対応します。
  • リクエストはpageQueryメソッドで処理されます。
  • リクエストのパラメータデータは、キーと値のペア pageNum と pageSize です。

II. バックエンドコードの記述

1ウェブレイヤー

リクエストを受け付けるRouteServletを作成し、pageQueryメソッドに特定のコードを記述します:

ウェブレイヤーのコードとは、リクエストデータの取得、サービスレイヤーの呼び出し、レスポンスデータの取得という3つのステップのことです。

  • リクエストには2つのキーと値のペアのデータがあり、対応する値はgetParameter()メソッドで別々に取得されます。

  • そして、サービス・レイヤーのメソッドを呼び出すパラメーターとして使用され、特定の処理が行われます。

  • 加工データの最終回答。

2サービス層

ページングデータの3つの主要パラメータ

  • 現在のページ番号 pageNum.
  • 現在のページのデータ項目数。
  • 現在のページデータの開始インデックス startCount.

デフォルト値は1,8,0です。つまり、1ページ目のデータはインデックス・ビット0から照会された8つのデータです。

冒頭で、彼らは互いに次のような関係にあるとも分析されました:

startCount=*ページサイズ

しかし、フロントエンドはリクエストパラメータを持っているので、リクエストパラメータを動的に追いかけます。

文字列データを int 型に変換

リクエストのデータは文字列なので、intに変換する必要があり、変換する前にnullでない判定をする必要があります。

apache が提供するツールクラス StringUtils の isNotBlank() メソッドを使用して、文字列の非 NULL 判定を行います:

ツール・クラスは、文字列の中に何もない、NULL、文字列の中に空白のみ、という3種類のデータを判定することができます。

だから、よりパワフルで実用的。

カプセル化されたデータ

daoレイヤーからデータをクエリすると、ルートオブジェクトのコレクションが返されます。

最後にjsonデータに変換され、ウェブレイヤーに返されます。

3層

サービスから渡されたパラメータpageSizeとstartCountを使用してデータベースからデータを照会します。

リクエストはpageNumとpageSizeパラメータに対するものでした。

サービス層の主な役割は、それらをデータベースクエリのパラメータに変換することです。

つまり、startCountインデックス・ビット・データから始まるpageSizeデータを照会しています。

第三に、フロントエンドのレンダリングページ

フロントエンドはバックエンドのレスポンスからデータを受け取った後、データを処理して対応するページタグにレンダリングする必要があります:

レスポンスデータはコレクションであるため、jQueryのforEachメソッドを使用してデータをトラバースする必要があります。

また、トラバーサルごとに対応する要素の値を取得し、その値を静的ページにスプライスします。

最後に、つなぎ合わせられたデータは、idセレクタを使ってページ上の対応するタグにレンダリングされます。

結論として

個人的なエネルギーと時間の制約のため、ページングクエリの機能は完全な実装ではありませんが、基本的にはそのような考えです。

多くの場合、学習とは特定のポイントについて学ぶことではないと思います:

どのように学ぶかを学ぶこと、そしてどんな問題にも立ち向かい、解決する方法を見つけ出す勇気を持つこと。

ご視聴ありがとうございました。

Read next

JavaScriptのエキスパートになるためにマスターすべき36のコンセプト

自分は変だ、時には価値がない、と不平を言う人がたくさんいます。人々がこのように文句を言うのは、何が起こっているのか理解していないからです。いくつかのシナリオが異なる方法で処理されていることには同意しますが、それは奇妙なことではなく、それなりに美しいことなのです。 プログラミング言語を好きになるには、まずその言語を深く理解し、コンセプトをひとつひとつマスターすることから始めるべきです。

Apr 16, 2020 · 13 min read