MyBatisの研究5($と#の違いやその他のヒント)

1. $と#の違い

#1は、例えば、文字列として渡された値である。SELECT ID、名前、学生からID =#{ID}年齢、1のID値の電流端、背景に渡され、選択することと等価ID、名前、ID =学生からの年齢 '1'。

$ 2は、例えば、SQLステートメントを生成する直接到来表示データである。SELECT ID、名前、学生ID = $ {ID}から年齢、選択に相当背景に渡さ1のID値の現在の終わり、 ID、名前、ID = 1の学生からの年齢。

#3 SQLインジェクションを大幅に防ぐことができます使用します。(文モザイク#{XXX}、PreparedStatementを使用して、より安全な、単純に#{}は、プリコンパイルされていることを意味し、そこにキャストされ、それが安全である、$ {}はちょうど、プリコンパイルされていません変数、非セキュア、およびSQLインジェクションの値をとります。)

4しかし、あなたは$を使用する必要性によって順番に使用している場合。

#5は、多くの場合、ほとんどのケースで使用されていますが、さまざまな状況に$を使用する必要があります。

2.このエントリは、データのIDを追加するためにデータを返します

 

 文中の対応するプロパティを追加

useGeneratedKeysは= "true" をkeyProperty = "ID"
< 挿入ID = "アドユーザー" のParameterType = "com.zhiyou100.zhl.bean.Users" useGeneratedKeys = "true"をkeyProperty = "ID" > 
        ユーザー(名前、年齢)の値(#{名前}、#{年齢}挿入); 
</ 挿入>

そして、この値IDを取得するためにテストします

 

 

1  @Test
 2  空隙testAdd(){
 3人の      uは=ユーザー新しいユーザー( "什么"、21 );
4      usersdao.addUser(U)。
5      のSystem.out.println(u.getId())。
6 }

より大きく、問題文の数よりも少ない3.sql

 

 

< 選択idは= "selByAge" ParameterTypeが= "マップ" resultTypeとを= "com.zhiyou100.zhl.bean.Users" > 
        <![CDATA [ 年齢のユーザーからの選択*> =#{分}と年齢<=#{最大} ]]> 
</ 選択> 

参加<![CDATA [SQL文の内容は、]]> タグは、この問題を解決するために

 

おすすめ

転載: www.cnblogs.com/murmansk/p/11442972.html