blog

Javaプロジェクト実践:検索機能の実装

さて、今日の勉強を始めましょう:\n\n事前の注意:今日の検索機能の実装について。\nそして、一般的なファジークエリで、このような主流の検索技術の転置インデックスに使用しませんでした。\nここでは、最...

May 7, 2020 · 4 min. read
シェア

今日は劉暁愛の独学ジャワ110日目。

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

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

追記:本日の検索機能の実装について。

転置インデックスのような主流の検索技術は使用せず、一般的なファジィクエリのみを使用します。

ここでは、sql文の動的スプライシングについて少し説明します。

sqlステートメントの動的スプライシング

クエスチョンマーク、ワイルドカード "?"

しかし、時にはパラメータが存在しない場合があります。例えば、クエリフロントエンドは、今回は3つのパラメータを渡しますが、次回は2つのパラメータしか渡しません。

この問題に直面したら?

SQL文の動的スプライシングを使用する必要がある場合、コードは次のように記述します:

SQL文のパラメータcidは不確実で、ある場合もあれば、ない場合もあります。

StringBuilder の使用

最初にSQL文の決定部分をStringBuilderに格納し、次にパラメータを格納するコレクションを作成します。

cidの判断

cidがNULLでなく存在する場合、SQL文を" and cid = ? "で接続します。を付加します。

cidの後に他のパラメータをスプライシング

SQL文のスプライシング " limit ?,?"そして、他の2つの固定パラメータをコレクションに預けます。

:SQLのスプライシングプロセス空間は、デバッグを介して、同じで、スプライスされたSQLと①を確認するために、要するに、忘れてはいけません見ることができます。

クエリデータ

SQL文を動的に保持するStringBuilderを文字列に変換し、パラメータを保持するコレクションを配列に変換し、jdbcTempを使用してクエリします。

フロントエンドとバックエンドのコードを書く

1 経営分析

検索ボックスのある静的ページを見つけるには、以下を参照してください:

課題は2つあります:

は検索にクリックイベントをバインドし、クリック後にroute_listページにジャンプし、検索された該当データを表示します。

バインドされる関数は queryByRname() です。

検索ボックスに入力されたデータを取得します。

ここでは、検索ボックスに対応するラベルを階層セレクタ$で選択することができます。

2 フロントエンド・コードの実装

関数 queryByRname() を定義します。

検索ボックスの内容を取得

階層セレクタを使用して、jQueryのval()メソッドを呼び出すと、対応するタグ(この場合は検索ボックス)のデータを取得することができます。

route_list.html のページにジャンプします。

location.hrefで対応するページにジャンプします。同時に、rname がパラメータとしてバックエンドに渡されます。

route_list.html ページコード

のジャンプはパラメータを持っているので、当然パラメータを取得し、サーバーのリクエストパラメータに追加する必要があります。

ブラウザは検索ボックスに入力されたデータを自動的にエンコードするため、そのうちの1つはパラメータをデコードする必要があります。

エンコードは、decodeURL()関数を使用して行うことができます。

3バックエンドはパラメータ

既存のビジネスロジックにパラメータを追加するだけです。

ウェブ階層にコードを追加するだけで、データrnameを取得できます。

同時に、サービス層にパラメータとして渡され、サービス層はまた、ダオ層のクエリにパラメータを増やします。

他のコードを変更する必要はなく、rnameパラメータを追加するだけです。

同じように、SQLクエリ文はダオ・レイヤーで動的に接続されます。

いずれにせよ、最初に完全なSQL文を書いてから、パラメータrnameを動的にスプライスすることができます。

チェック方法は、sql文が正しく接続されているかどうかを判断するためにデバッグすることができます。

検索ボックスのデータの埋め戻し

検索ボックスに情報を入力した後、「検索」をクリックすると、検索ボックスの内容が消えます。

そして、その全員がまだいるはずで、どうすればいいのか?

データの埋め戻しを検討する必要があるでしょう:

一般的な考え方としては

検索ボックスのデータを取得したら、対応するラベルにリセットします。

その中でも特筆すべきは

パラメータをデコードし、ページ読み込みイベントをバインドします。

最後に

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

Read next

プロミス」の実装

promiseのコンストラクタは、コールバック関数のexecute()を受け取るとすぐに実行します。 プロミスは基本的にステートマシンであり、状態は次の3つしかありません:Pending、Fulfilled、Rejected、state ...

May 7, 2020 · 2 min read