1。 #すべての着信データを文字列として扱い、自動化するデータに二重引用符を追加します。たとえば、#user_id#で注文、渡された値が111の場合、sqlにパージするときの値は「111」で注文します。渡された値がIDである場合、SQLに解析された値は「ID」によって順序です。
2。 $渡されたデータを直接表示し、SQLで生成します。たとえば、$ user_id $で注文します。渡された値が111の場合、sqlに解析されたときの値はuser_idによって順序です。渡された値がIDである場合、SQLに解析された値はIDで順序です。
3. #メソッドは、SQL注入を大幅に防ぐことができます。
4. $メソッドはSQL注入を防ぐことはできません。
5。 $メソッドは、一般に、テーブル名を渡すなど、データベースオブジェクトを渡すために使用されます。
6.一般的に、#を使用できる場合は、$を使用しないでください。
MyBatisをソートするときに動的パラメーターで注文を使用する場合、#の代わりに$を使用することに注意を払う必要があります。
文字列置換
デフォルトでは、#{}形式の構文を使用すると、MyBatisが前処理されたステートメントプロパティを作成し、背景(?など)として安全な値を設定します。これは安全で迅速であり、SQLステートメントに直接変更されない文字列を挿入するだけです。たとえば、注文のように、次のように使用できます。
ここで、MyBatisは文字列を変更または脱出しません。
重要:ユーザーからのコンテンツ出力を受け入れて、ステートメントの変更されていない文字列に提供することは安全ではありません。これにより、潜在的なSQLインジェクション攻撃につながる可能性があるため、ユーザーがこれらのフィールドに入ることを許可したり、通常はエスケープして自分でチェックすることを許可しないでください。
上記は、MyBatisの#と$の違いに関する簡単な議論です。誰もがwulin.comをサポートできることを願っています〜