org.apache.ibatis.binding.BindingException: Parameter 'company' not found.报错解决

org.apache.ibatis.binding.BindingException: Parameter 'company' not found. Available parameters are [1, 0, param1, param2] 报错解决

经常使用mybatis或者跟数据库打交道的都老爱语句这个异常,那么就总结一下解决方案,省得我下次又去找。

1、Dao层的抽象方法中的参数一般情况下默认的是一个参数或者一个对象;

如果你是这种条件。

例如:

public interface StudentDao 
	int selectById(int id)
	int insert(Student stu)
}

这两种是正常的方式,

不会出现什么问题,mappper中的对应取值都是用 #{} 这种方式;

例如:


	


		insert into inbox_template (name,age)
		values (#{name},#{age})
	

注意:上面如果是student对象作为参数,那么mapper中不能少了parameterType,否则会找不对应的属性.

2、当传多个参数时,就容易出现问题了,问题重现,如果像下面那样写就会出现标题中的错误,找不到参数;

例如

public interface StudentDao {
	int selectBySelective(int id,String name)
}

解决办法:
在每个参数前加上@param注解,括号中注解的名称就是mapper中映射的值.

如下:

public interface StudentDao {
	int selectBySelective(@Param("id")int id,@Param("name")String name);
}

至于mapper中,还是那样写,可以使用${}或者#{}任意一种方式:



3、既有参数又有对象时,对象也需要注解,一般参数的直接取,对象的需要对象.属性.

如下:

public interface StudentDao {	
	int selectBySelective(@Param("page")int page,@Param("stu")Student stu);
}

mapper:


4、像这种有公共的属性,例如分页都要传开始的index和pagesize,然后还要在传对象,就是3中的案例,可以为了方便管理,自己再新建一个类,里面封装了page的属性,同时又有对象.

如下:
建一个page类:

public class Page {
	
	private int pageNo;
	
	private int pageSize;
	
	private Object obj;
	
	public Page(int page,int pageSize,Object obj){
		this.pageNo=page;
		this.pageSize=pageSize;
		this.obj=obj;
	}
 
	public int getPageNo() {
		return pageNo;
	}
 
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
 
	
	public int getPageSize() {
		return pageSize;
	}
 
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
 
	public Object getObj() {
		return obj;
	}
 
	public void setObj(Object obj) {
		this.obj = obj;
	}
	
	
}

在处理时直接new page对象中自己定义好的构造函数,然后直接把page作为参数传到dao:

Student stu = new Student();
		stu.setName("aa");
		stu.setId(1);
		stu.setAge(12);
		Page page = new Page(1, 10,stu);

dao:

public interface StudentDao {
 
	int update(Page page);
	
}

mapper:


		update inbox_template
		set 
		name = #{obj.name},
		age = #{obj.age}
		where id = #{obj.id}
	

例子:

需要传入page,rows整型参数和map对象。
org.apache.ibatis.binding.BindingException: Parameter 'company' not found.报错解决_第1张图片

在dao层方法里面,要加入注解@Param:
org.apache.ibatis.binding.BindingException: Parameter 'company' not found.报错解决_第2张图片

mapper.xml里面直接使用map参数:
org.apache.ibatis.binding.BindingException: Parameter 'company' not found.报错解决_第3张图片


参考地址:https://blog.csdn.net/qq_33142257/article/details/53202443

你可能感兴趣的:(异常报错类)