2017-08-02 109 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使用通用名稱,以供其不能確定名稱參數:

[...]他們將文字「參數」,然後由它們在參數列表中的位置來命名例如:#{param1},#{param2}等。如果您想更改參數的名稱(僅限多個參數),則可以在參數上使用@Param(「paramName」)註釋。

所以,如果你在你的SQL代碼中使用這些名稱,事情應該可以正常工作。

如果您爲javac指定-parameters編譯器標誌,它確實會包含方法參數的名稱以及您原則上建議的方法。我看過一篇教程聲稱MyBatis會使用這些教程,儘管參考文檔似乎沒有提及它。你可以試試看。