目次
などの SQL ステートメントの基本フレームワークを形成します。パラメータが空ではない場合、「name=?」、「age>?」などのリクエスト パラメータに基づいてクエリ条件が生成され、そのクエリ条件を " > などの SQL ステートメントの基本フレームワークを形成します。パラメータが空ではない場合、「name=?」、「age>?」などのリクエスト パラメータに基づいてクエリ条件が生成され、そのクエリ条件を
が存在するかどうかを判断する必要があります。このクエリ条件の存在はクエリに影響を与えません。これらの要件に従って、この A クエリ条件は常に true である必要があり、基本は「1=1」となります。 SQL フレームワークは " > が存在するかどうかを判断する必要があります。このクエリ条件の存在はクエリに影響を与えません。これらの要件に従って、この A クエリ条件は常に true である必要があり、基本は「1=1」となります。 SQL フレームワークは
3.服务器端(Servlet)" >3.服务器端(Servlet)
ホームページ データベース mysql チュートリアル JDBC は動的クエリをどのように実装しますか?

JDBC は動的クエリをどのように実装しますか?

Jul 21, 2017 pm 02:12 PM
jdbc 成し遂げる お問い合わせ

ネットワーク開発では、複数の条件を含む包括的なクエリが非常に一般的であり、このビジネス ニーズに対処するには、通常、次の方法を使用します:
1. パラメーター値を SQL ステートメントに直接結合します。そしてクエリを実行します。
このメソッドのセキュリティは比較的貧弱であると言え、SQL によって誤って挿入される可能性があります。最初にパラメータ値の特殊文字をフィルタリングすることもできますが、それは常に非常にエレガントであるとは限りません。
2. 最初にプレースホルダーを使用しますか? ' を使用して SQL を結合し、条件判断によって PreparedStatement を埋めます。
この方法で TX を使用したことがある人なら、この方法の複雑さを知っています。まず、SQLを書くときに一度判断しなければならず、PSTを記入するときに再度判断しなければならないので面倒です。
3. プロシージャ ストレージ
私は以前、プロジェクトを MySQL から MSSQL に移行し、最終的には異なるバージョンの製品を別のデータベースで実行することにしました。時間。 。
実際、私が言いたいのは、比較的エレガントでシンプルなクエリ メソッドが欲しいということだけです。前の段落で .NET で提供されている SQLHelper に触発されて、同様のコンポーネントを作成しました (実際、Google で調べました)。要件を満たす根拠が見つかりませんでした

1. 動的クエリとは何ですか?

クエリの DQL ステートメントを作成するこのプロセスは、動的クエリと呼ばれます。 2. 動的クエリの難しさ

選択できるクエリ条件が多く、組み合わせも多いため、すべてをリストするのは難しい

3. 最終的なクエリ文の構成

ユーザーがクエリ条件データを入力すると、クエリ条件は最終条件の一部になります

2 つの基本原則

クエリ条件に関係なく、クエリ フィールドとデータベースは修正されていますが、変更された内容は、
select column... from table。
ログイン後にコピー

などの SQL ステートメントの基本フレームワークを形成します。パラメータが空ではない場合、「name=?」、「age>?」などのリクエスト パラメータに基づいてクエリ条件が生成され、そのクエリ条件を

基本フレームワークに追加します。ここで、生成されたクエリ条件に「and」を追加する必要があるかどうかをどのように判断するかという疑問が生じます。

このクエリ条件が最初のクエリ条件である場合、「and」を追加する必要はありません。それ以外の場合、問題が発生します。クエリ

条件を生成するたびに、前のクエリ条件

が存在するかどうかを判断する必要があります。このクエリ条件の存在はクエリに影響を与えません。これらの要件に従って、この A クエリ条件は常に true である必要があり、基本は「1=1」となります。 SQL フレームワークは

select column...from table where 1=1
ログイン後にコピー
各動的クエリ条件の前に「and」を追加します
3. .List コレクションは値をプレースホルダーに割り当てます
DQL ステートメントでは、次のことを行う必要があります。プレースホルダーに値を割り当てる方法を検討してください。クエリ条件を生成するときに、プレースホルダーに対応するパラメーターを収集して 1 つに保存することができます。これにより、プレースホルダーが連続するようになります。 List コレクション内の要素との対応関係。n 番目のプレースホルダーは、プレースホルダーに値を割り当てるだけでなく、そのプレースホルダーにも対応します。また、フィールドと一致するデータ型を選択する必要もあります。リスト コレクションは、データを保存するだけでは要件を満たすことができなくなり、さまざまなフィールドを区別し、コレクション内の要素を選択する必要があります。 「列+データ」の形式になります。 3 つのデモ
1. データベース

2.

3.服务器端(Servlet)

"/dynamicQueryServlet"  DynamicQueryServlet     serialVersionUID = 1L "text/html;charset=UTF-8"String name = request.getParameter("name"= request.getParameter("sex"= request.getParameter("age"= request.getParameter("depNo"String baseSQL = "select name,sex,age,depNo from tb_employee where 1=1"=  StringBuilder();List<String> params =  ArrayList<String>" and name=? ""name," + name);" and sex=? ""sex," +" and age=? ""age," +" and depNo=?""depNo," += = = = == ( i = 0; i < params.size(); i++== str.split(","); (arr[0].equals("age" a = Integer.parseInt(arr[1+ 1+ 1, arr[1== res.getString("name"= res.getString("sex" targetAge = res.getInt("age"= res.getString("depNo"= "name=" + targetName + "--" + "sex=" + targetSex + "--" + "age=" + targetAge + "--"
                        + "depNo=" ++ "<br>" (ClassNotFoundException | (res !=  (ps !=  (conn != = length = (length == 0"查询为空"+ "<br>" +   (str ==  | str.equals(""    Connection getConnection() "com.mysql.jdbc.Driver" DriverManager.getConnection("jdbc:mysql://localhost:3366/test01", "root", "123"
ログイン後にコピー

以上がJDBC は動的クエリをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか? Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか? Mar 24, 2024 am 11:27 AM

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか?ソーシャルメディアの台頭により、WeChatは人々の日常生活に欠かせないコミュニケーションツールの1つになりました。ただし、多くの人は、同じ携帯電話で同時に複数の WeChat アカウントにログインするという問題に遭遇する可能性があります。 Huawei 社の携帯電話ユーザーにとって、WeChat の二重ログインを実現することは難しくありませんが、この記事では Huawei 社の携帯電話で WeChat の二重ログインを実現する方法を紹介します。まず第一に、ファーウェイの携帯電話に付属するEMUIシステムは、デュアルアプリケーションを開くという非常に便利な機能を提供します。アプリケーションのデュアルオープン機能により、ユーザーは同時に

12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 Mar 28, 2024 pm 03:11 PM

12306 チケット予約アプリの最新バージョンをダウンロードします。誰もが非常に満足している旅行チケット購入ソフトウェアです。行きたい場所に行くのに非常に便利です。ソフトウェアには多くのチケット ソースが提供されています。本物のチケットを渡すだけで済みます。 - 氏名認証によるオンラインチケット購入 全ユーザー 旅行券や航空券を簡単に購入でき、さまざまな割引が受けられます。また、チケットを入手するための事前予約も開始できます。ホテルや特別な車の送迎も予約できます。これを使用すると、ワンクリックで行きたい場所に行き、チケットを購入できます。旅行がより簡単で便利になり、すべての人に旅行体験を提供します編集者はオンラインで詳細を説明するようになり、12306 人のユーザーに過去のチケット購入記録を表示する方法が提供されます。 1. Railway 12306 を開き、右下隅の [My] をクリックして、[My Order] をクリックします。 2. 注文ページで [Paid] をクリックします。 3. 有料ページにて

Xuexin.com で学歴を確認する方法 Xuexin.com で学歴を確認する方法 Mar 28, 2024 pm 04:31 PM

Xuexin.com で私の学歴を確認するにはどうすればよいですか? Xuexin.com で学歴を確認できますが、多くのユーザーは Xuexin.com で学歴を確認する方法を知りません。次に、エディターが Xuexin.com で学歴を確認する方法に関するグラフィック チュートリアルを提供します。興味のあるユーザーはぜひ見に来てください! Xuexin.com の使用方法チュートリアル: Xuexin.com で学歴を確認する方法 1. Xuexin.com の入り口: https://www.chsi.com.cn/ 2. Web サイトのクエリ: ステップ 1: Xuexin.com のアドレスをクリックします。上記をクリックしてホームページに入ります [教育クエリ]をクリックします; ステップ2: 最新のWebページで下図の矢印に示すように[クエリ]をクリックします; ステップ3: 新しいページで[学術単位ファイルにログイン]をクリックします; ステップ4: ログインページで情報を入力し、[ログイン]をクリックします。

PHP プログラミング ガイド: フィボナッチ数列を実装する方法 PHP プログラミング ガイド: フィボナッチ数列を実装する方法 Mar 20, 2024 pm 04:54 PM

プログラミング言語 PHP は、さまざまなプログラミング ロジックやアルゴリズムをサポートできる、Web 開発用の強力なツールです。その中でも、フィボナッチ数列の実装は、一般的で古典的なプログラミングの問題です。この記事では、PHP プログラミング言語を使用してフィボナッチ数列を実装する方法を、具体的なコード例を添付して紹介します。フィボナッチ数列は、次のように定義される数学的数列です。数列の最初と 2 番目の要素は 1 で、3 番目の要素以降、各要素の値は前の 2 つの要素の合計に等しくなります。シーケンスの最初のいくつかの要素

Huawei携帯電話にWeChatクローン機能を実装する方法 Huawei携帯電話にWeChatクローン機能を実装する方法 Mar 24, 2024 pm 06:03 PM

Huawei 携帯電話に WeChat クローン機能を実装する方法 ソーシャル ソフトウェアの人気と人々のプライバシーとセキュリティの重視に伴い、WeChat クローン機能は徐々に人々の注目を集めるようになりました。 WeChat クローン機能を使用すると、ユーザーは同じ携帯電話で複数の WeChat アカウントに同時にログインできるため、管理と使用が容易になります。 Huawei携帯電話にWeChatクローン機能を実装するのは難しくなく、次の手順に従うだけです。ステップ 1: 携帯電話システムのバージョンと WeChat のバージョンが要件を満たしていることを確認する まず、Huawei 携帯電話システムのバージョンと WeChat アプリが最新バージョンに更新されていることを確認します。

PHP ゲーム要件実装ガイド PHP ゲーム要件実装ガイド Mar 11, 2024 am 08:45 AM

PHP ゲーム要件実装ガイド インターネットの普及と発展に伴い、Web ゲーム市場の人気はますます高まっています。多くの開発者は、PHP 言語を使用して独自の Web ゲームを開発することを望んでおり、ゲーム要件の実装は重要なステップです。この記事では、PHP 言語を使用して一般的なゲーム要件を実装する方法を紹介し、具体的なコード例を示します。 1. ゲームキャラクターの作成 Web ゲームにおいて、ゲームキャラクターは非常に重要な要素です。ゲームキャラクターの名前、レベル、経験値などの属性を定義し、これらを操作するメソッドを提供する必要があります。

Golang がゲーム開発の可能性を可能にする方法をマスターする Golang がゲーム開発の可能性を可能にする方法をマスターする Mar 16, 2024 pm 12:57 PM

今日のソフトウェア開発分野では、効率的で簡潔かつ同時実行性の高いプログラミング言語として、Golang (Go 言語) が開発者にますます好まれています。豊富な標準ライブラリと効率的な同時実行機能により、ゲーム開発の分野で注目を集めています。この記事では、ゲーム開発に Golang を使用する方法を検討し、具体的なコード例を通じてその強力な可能性を示します。 1. ゲーム開発における Golang の利点 Golang は静的型付け言語として、大規模なゲーム システムの構築に使用されます。

MySQL と PL/SQL の類似点と相違点の比較 MySQL と PL/SQL の類似点と相違点の比較 Mar 16, 2024 am 11:15 AM

MySQL と PL/SQL は 2 つの異なるデータベース管理システムであり、それぞれリレーショナル データベースと手続き型言語の特性を表しています。この記事では、具体的なコード例を示しながら、MySQL と PL/SQL の類似点と相違点を比較します。 MySQL は、構造化照会言語 (SQL) を使用してデータベースを管理および操作する、一般的なリレーショナル データベース管理システムです。 PL/SQL は Oracle データベースに固有の手続き型言語であり、ストアド プロシージャ、トリガー、関数などのデータベース オブジェクトを記述するために使用されます。同じ

See all articles