`

138. MyBatis升注解- mybatic insert异常:BindingException: Parameter 'name' not found

阅读更多

 

【视频&交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

【本篇博客,有配套视频,视频地址:《Spring Boot MyBatis-注解异常: BindingException Paramete,公众号中点击下面的阅读原文,视频中讲解的更详细】

异常信息如下

nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [0, 1, param1, param2]

     出现这个异常的原因是因为你在使用@insert的使用,没有进行相应的字段对应关系。

     如下的代码就会报如上的错误:

@Insert("insert into Demo(name,password) values(#{name},#{password})")
public void save(String name,String password);

 

那么怎么修改呢?正确的代码应该如下:

@Insert("insert into Demo(name,password) values(#{name},#{password})")
public void save(@Param("name") String name,@Param("password") String password);

 

这里使用@Param设置参数的对应关系。

但是如下的代码就不会报错:

@Insert("insert into Demo(name) values(#{name})")
public void save(String name);

 

当 insert 语句中只有一个参数的,对应的void save方法不需要做任何特殊处理(不需要加@Param也是可以对应上的),当有多个参数的时候,需要使用@Param注解进行字段的对应。

 

公众号网友网友Sun回复:在MyBats内部!当只有一个参数时,会直接使用这个参数,当多个参数时,会创建Map对像包裏多个对多个参数!多个参数会比下标0开始一一对应,同时,会创建一个param1...pamamN.与多个参数一一对应,如果指定了@Param.则不会创paramN.@Param中value指向的就是别名!

 

 

视频&交流平台

à SpringBoot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics