Parameter 'email' not found. Available parameters are [0, 1, param1, param2]解決方案


轉自:https://blog.csdn.net/wdehxiang/article/details/77619569

原因:

傳入多個值時,mybatis會自動將這些值轉成類似map形式的值,以0,1,2…的序列為keyName。 
這里我們需要先簡單了解一下mybatis的傳值機制。Mybatis現在可以使用的parameterType有基本類型和Java負責類型

基本數據類型:包含int,String,Date等。基本數據類型作為傳參,只能傳入一個。通過#{參數名}獲取。 
復雜數據類型:包含Java實體類、Map。通過#{屬性名}或#{map的keyName}獲取。

解決方案:

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

1 public User login(@Param(value="email") String email, @Param(value="password") String password);
1 <select id="login" resultType="User"  parameterType="String">
2       select * from user where email=#{email} and password=#{password}
3 </select>

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

1 public User login(HashMap<String,String) map);
1 <select id="login" resultType="User"  parameterType="Map">
2       select * from user where email=#{email} and password=#{password}
3 </select>

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

1 public User login(String email, String password);
1 <select id="login" resultType="User"  parameterType="String">
2          select * from user where email=#{0} and password=#{1}
3 </select>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM