Parameter 'status' not found.Available parameters are [arg2, arg1, arg0, param3, param1, param2]
问题:
### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'status' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'status' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
翻译:
###查询数据库时出错。原因: org.apache.ibatis.binding。绑定异常:未找到参数“status”。可用参数为[arg2, arg1, arg0, param3, param1, param2]
###原因: org.apache.ibatis.binding。绑定异常:未找到参数“status”。可用参数为[arg2, arg1, arg0, param3, param1, param2]
原因:
1 DAO层接口方法映射到SQL语句时,传递了多个参数,SQL语句中参数占位符无法与参数一一对应,此时应加@Param注解。
//多个参数必须使用@param注解,即使参数中有一个是实体类对象。而且对于这个实体类对象,SQL语句参数占位符必须写为#{对象名.属性名}。
//因为此时已经不再是传递一个对象作为参数的情况。
List<Brand> selectByConditionAndPage(@Param("brand") Brand brand,@Param("index") int index,@Param("size") int size);
2 DAO层接口方法映射到SQL语句时,传递了多个参数,也加了@Param注解,但是其中一个参数为实体类对象,SQL语句中使用其对象属性时,未加对象名。
<select id="selectByConditionAndPage" resultMap="brandResultMap">
select * from tb_brand
<where>
<!-- 无论是if标签中,还是参数占位符中,使用属性,都必须加对象名。-->
<if test="brand.companyName != null and brand.companyName != '' ">
and company_name like #{brand.companyName}
</if>
<if test="brand.brandName != null and brand.brandName != '' ">
and brand_name like #{brand.brandName}
</if>
<if test="brand.status != null">
and status = #{brand.status}
</if>
limit #{index},#{size};
</where>
</select>

浙公网安备 33010602011771号