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>

 

posted @ 2023-04-08 17:27  10kcheung  阅读(605)  评论(0)    收藏  举报