今日は劉暁愛の独学ジャワ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文が正しく接続されているかどうかを判断するためにデバッグすることができます。
検索ボックスのデータの埋め戻し
検索ボックスに情報を入力した後、「検索」をクリックすると、検索ボックスの内容が消えます。
そして、その全員がまだいるはずで、どうすればいいのか?
データの埋め戻しを検討する必要があるでしょう:
一般的な考え方としては
検索ボックスのデータを取得したら、対応するラベルにリセットします。
その中でも特筆すべきは
パラメータをデコードし、ページ読み込みイベントをバインドします。
最後に
ご視聴ありがとうございました。