org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found.的问题解决办法
2016-11-17 18:21
796 查看
前言:出现这个问题的原因有好几个,所以我们逐步的来解释并解决问题;
1、首先,要明确一点的是,Dao层的抽象方法中的参数一般情况下默认的是一个参数或者一个对象;
例如:public interface StudentDao { int selectById(int id); int insert(Student stu); }
这两种是正常的方式,不会出现什么问题,mappper中的对应取值都是用#{}这种方式;
例如:
<select id="selectById" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from student where 1=1 and id = #{id} </select>
<insert id="insert" parameterType="com.yoho.crm.dal.model.student"><!--注意参数的类型要与对象类对应,也就是这个类的路径--> insert into inbox_template (name,age) values (#{name},#{age}) </insert>
上面如果是student对象作为参数,那么mapper中不能少了parameterType,否则会找不对应的属性
2、当传多个参数时,就容易出现问题了,问题重现,如果像下面那样写就会出现标题中的错误,找不到参数;
public interface StudentDao { int selectBySelective(int id,String name); }解决办法就是在每个参数前加上@param注解,括号中注解的名称就是mapper中映射的值,如下:
import org.apache.ibatis.annotations.Param; public interface StudentDao { int selectBySelective(@Param("id")int id,@Param("name")String name); }mapper中还是那样写,可以使用${}或者#{}任意一种方式:
<select id="selectBySelective" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from student where name = #{pname} and id = #{pid} </select>
3、既有参数又有对象时,对象也需要注解,一般参数的直接取,对象的需要对象.属性,如下:
public interface StudentDao { int selectBySelective(@Param("page")int page,@Param("stu")Student stu); }mapper:
<select id="selectBySelective" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from student where name = #{stu.name} and id = #{stu.id} limit 0 ,#{page} </select>
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 id="update" parameterType="com.yoho.crm.dal.model.student"><!--此时obj则是对应page中的属性了--> update inbox_template set name = #{obj.name}, age = #{obj.age} where id = #{obj.id} </update>
相关文章推荐
- 【问题解决】Maven搭建Web项目中org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问
- mybatis问题org.apache.ibatis.binding.BindingException: Parameter 'loginId' not found.
- mybatis问题org.apache.ibatis.binding.BindingException: Parameter 'title' not found.
- 关于org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),找不到mapper文件问题解决
- org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found
- mybatis问题org.apache.ibatis.binding.BindingException: Parameter 'loginId' not found.
- Caused by: org.apache.ibatis.binding.BindingException: Parameter 'offset' not found. Availabl
- 关于mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误的问题。
- mybatis方法多个参数时报错:Caused by: org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found
- mybatis多参数查询问题:org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available par
- 关于mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误的问题
- nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found
- 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误
- IDEA的maven项目出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误解决方法
- 关于mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误的问题。
- 无效绑定问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- mybaits异常:org.apache.ibatis.binding.BindingException: Parameter 'date' not found.
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决过程
- 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- org.apache.ibatis.binding.BindingException: Parameter 'set' not found