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>