2017-08-02 3 views
0
User selectUser(@param(“name”)String name,@param(“password”)String password); 

<select id=" selectUser" resultMap="BaseResultMap"> 
    select * from user where user_name = #{name} and user_password=#{password} 
</select> 

このコードのように、mybatisは変数名を取得するためにリフレクションを使用でき、変数は異なる名前を持ち、@param(“XXX”)を置き換えることができます。MyBatisのは@Paramを必要とするのはなぜ?

答えて

1

実際の質問に答えるために:デフォルトでは

を、メソッドのパラメータ名は、バイトコードの一部ではありません。あなたが提案するものは、デフォルトでは動作しません。

MyBatisのは、それが名を判断できないためのパラメータのための一般的な名前を使用しています。

[...]彼らは、パラメータリスト内の位置によって、続くリテラル「PARAM」で名前が付けられますデフォルトでは、例:#{のparam1}、#{} PARAM2などあなたがパラメータ(複数のみ)の名前を変更したい場合は、パラメータの@Param(「paramNameに」)アノテーションを使用することができます。

SQLコードでこれらの名前を使用するとうまくいくはずです。

あなたはjavacのため-parametersコンパイラフラグを指定した場合、それは確かにあなたが原則的に作品を提案メソッドのパラメータの名前とアプローチが含まれます。私は、リファレンスドキュメントはそれを言及していないようですが、MyBatisのは、それらを使用する特許請求のチュートリアルを見てきました。あなたはそれを試してみてください。

関連する問題