Error updating database. Cause: org.apache.ibatis.binding.BindingException: Parameter ‘xxx’ not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
这种情况可能是由于对数据库进行操作时有多个参数但是持久层即Dao层中的方法内没有写占位符 @Param(“xxx”) 导致的:
例如:对数据库进行更新时:
<update id="update" >
update lmonkey_cart
set quantity=#{quantity}
where u_id=#{u_id} and p_id=#{p_id}
</update>
这里面就包含了三个参数, 如果Dao层中是这样的:
public interface Lmonkey_CartDao {
int update(Integer quantity,
String u_id,
Integer p_id);
}
那么便会报某参数找不到的错,但是如果在每个参数前面加上占位符的话就不会出现这种错误:
public interface Lmonkey_CartDao {
int update(@Param("quantity") Integer quantity,
@Param("u_id") String u_id,
@Param("p_id") Integer p_id);
}
当然,在Service层中也可以写上占位符,并不会有任何影响,但是Dao层是必须要写的,因为它是直接和xml文件里的SQL语句进行对接的。
|