ホームページ  >  記事  >  mybatisの#と$の違いは何ですか

mybatisの#と$の違いは何ですか

青灯夜游
青灯夜游オリジナル
2019-04-03 15:15:5954821ブラウズ

mybatis の # と $ の主な違いは次のとおりです: # 受信パラメータは SQL の文字列として表示されます、 # このメソッドは SQL インジェクションを大幅に防ぐことができます; $ 受信パラメータは、SqL 値の受信として直接表示されます ($ メソッド) SQL インジェクションを防ぐことはできません。

mybatisの#と$の違いは何ですか

MyBatis は、カスタマイズされた SQL、ストアド プロシージャ、および高度なマッピングをサポートする優れた永続層フレームワークです。 MyBatis は、ほとんどすべての JDBC コード、パラメータの手動設定、結果セットの取得を回避します。 MyBatis は、単純な XML または注釈を使用して、ネイティブ情報を構成およびマッピングし、インターフェースおよび Java POJO (Plain Ordinary Java Object、通常の Java オブジェクト) をデータベース内のレコードにマッピングできます。

動的 SQL は mybatis の主な機能の 1 つであり、マッパーで定義されたパラメータが XML に渡された後、mybatis はクエリを実行する前にそれらを動的に解析します。 Mybatis は、動的 SQL をサポートする 2 つの構文 #{} と ${} を提供しており、どちらも必要なパラメーターを SQL ステートメントに動的に渡します。

#mybatis の # と $ の違いは何ですか

1. 渡されたパラメータは SQL では異なって表示されます

#渡されたパラメータは SQL の文字列として (文字列として) 表示され、自動的に渡されたデータには二重引用符が追加されます。

例: 次の SQL を使用します

select id,name,age from student where id =#{id}

渡すパラメータ ID が「1」の場合、上記の SQL は次のように解析されます:

select id,name,age from student where id ="1"

$受信パラメータは次のとおりです。 SQL 渡された値は

に直接表示されます。例: 次の SQL を使用します。

select id,name,age from student where id =${id}

渡すパラメータ ID が「1」の場合、上記の SQL の解析は次のようになります。 #
select id,name,age from student where id =1

2、# は SQL インジェクション (ステートメントのスプライシング) のリスクを防ぐことができますが、$ は SQL インジェクションを防ぐことはできません。

3. $ メソッドは通常、テーブル名などのデータベース オブジェクトを渡すために使用されます。

4. ほとんどの場合、# がよく使用されます。一般に、# が使用できる場合は、$ を使用しないでください。ただし、場合によっては、$ を使用する必要があります。例: 動的パラメーターによる順序を使用する場合MyBatis を並べ替えるときは、# ではなく $ に注意する必要があります。

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がmybatisの#と$の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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