Parameter '**' not found. Available parameters are [0, 1, param1, param2]問題解決記錄

MyBaits 出現Parameter '**' not found. Available parameters are [0, 1, param1, param2]

轉自https://www.cnblogs.com/java-dyb/p/10894839.html

原因:

傳入多個值時,mybatis會自動將這些值轉成類似map形式的值,以0,1,2…的序列為keyName。

這里我們需要先簡單了解一下mybatis的傳值機制。Mybatis現在可以使用的parameterType有基本類型和Java負責類型

基本數據類型:包含int,String,Date等。基本數據類型作為傳參,只能傳入一個。通過#{參數名}獲取。?

復雜數據類型:包含Java實體類、Map。通過#{屬性名}或#{map的keyName}獲取。

解決方案:

方案一:在Dao層mapper接口的方法中,為每個參數添加@Param注解

public User login(@Param(value="email") String email, @Param(value="password") String password);

方案二:將多個值存入Map中

public User login(HashMap<String,String)? map);

方案三:以傳遞參數的順序通過#{0},#{1}獲取

public User login(String email, String password);

<select id="login" resultType="User" parameterType="String">

????????select * from user where email=#{0} and password=#{1}

</select>

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容