Java Mybatisの中の${}と啢{の違いは詳しく説明します。


はい、本当に開発をしても一年近くになります。いつも他の人のブログを見ています。自分は書くのが億劫で、ブログも書けないので、今日はゆっくりとブログを書く練習を始めましょう。この間ちょうど会社でこんな問題に遭いました。
一、例を挙げて説明する

 select * from user where name = "dato"; 
 
 select * from user where name = #{name}; 
 
 select * from user where name = '${name}'; 
普通、私たちはこの中に何か違いがあることに気づかないです。これらのsqlはすべて私達の目的を達成することができますので、datoという名前のユーザーを調べに行きます。
二、違います
動的SQLはmybatisの強力な特性の一つであり、他のORMフレームワークよりも優れている重要な原因の一つでもある。mybatisはsql文をプリコンパイルする前に、sqlを動的解析し、BoundSqlオブジェクトとして解析します。ここで動的SQLを処理します。ダイナミックSQLの解析段階では、钻{}と${}は違った表現があります。

select * from user where name = #{name}; 
皱{}ダイナミック解析の際、パラメータマーカーに解析されます。解析後の文は以下の通りです。

select * from user where name = ?; 
じゃ私たちが${}を使う時

select * from user where name = '${name}'; 
${}ダイナミック解析の際に、私達が入ってきたパラメータをString文字列として私達の文に充填すると、次のような文になります。

select * from user where name = "dato"; 
プリコンパイル前のSQL文にはすでに変数が含まれていません。完全に定数データです。私たちが普通に変数がないsqlに相当します。
以上より、{}変数の代替段階は動的SQL解析段階であり、啳{}変数の置換はDBMSである。
これはㄟ{}と{}私たちが見られる主な違いです。このほかに、次のような違いがあります。
  • 方式はsql注入を大きく防ぐことができます。
  • $方式ではSql注入を防ぐことができません。
  • $方式は、一般的にデータベースオブジェクトに着信するために使用される。例えば、着信テーブル名。
  • .一般的に菗が使えるものは使わないでください。
  • だから私達はmybatisを使う時に、できるだけ〓の方式を使います!!ここはみんなの注意すべきところです。
    ここで、Mybatisの中の${}と菗の使い分けについて詳しく解説した文章を紹介します。もっと関連したMybatisを紹介します。  ${ }   #{ } 違いの内容は私達の以前の文章を検索してください。または下の関連記事を引き続きご覧ください。これからもよろしくお願いします。