问题描述:
解决mybatis关于传参出现 Parameter ‘username’ not found. Available parameters are [0, 1, param1, param2] 的问题
项目场景:
dao层传递两个参数到mapper文件时,报错,代码如下:dao层
LbUser login(String username,String password);
mapper文件
<select id="login" resultMap="BaseResultMap" parameterType="com.wei.domain.LbUser" >
select id, username, password, role from lb_user where username = #{username} and password = #{password}
</select>
原因分析:
结果运行的时候就报了上面的错误,调试发现传递的参数都是有值的,但是为什么会报这个错。
原来这与Mybatis的参数匹配机制有关,当传递多个参数的时候,映射机制并不清楚如何匹配到正确的参数。
解决方案:
1. 使用@Param参数
LbUser login(@Param("username")String username, @Param("password")String password);
- 使用map方式传参
LbUser login(Map<String, Object> map);
问题完美解决