`

Spring Boot葵花宝典:初露锋芒:MyBatis insert异常 Parameter 'name' not found

 
阅读更多

 

【视频&交流平台】

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

宝典纲领:

日出东方,唯我不败,葵花在手,天下我有

Angel是我,Andy是我,悟纤是我。

我就是我,不一样的我,葵花在手,说走就走。

天下神功,武林绝学,葵花宝典,你值得拥有。

 

典录:

       初露锋芒:锋芒:刀尖的刃口和尖端,意指人的棱角和锐气。比喻初次显示出棱角或刚开始表现出力量或才能

 

 

五、宝典5:MyBatis insert异常:BindingException: Parameter'name' not found

5.1 宝典先决

在使用MyBatis  Insert的时候,如下代码(移动端代码支持左右滑动):

 

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

就会碰到这样的异常信息:

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

 

 

5.2 宝典口诀

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

 

 

口诀:

我的名字叫MB,玩转数据就是NB。

一参一位较随意,咋写咋都对。

两参两位很挑剔,参数名称需定义。

 

 

口诀翻译:

原句:我的名字叫MB,玩转数据就是NB。

翻译:MB:MyBatis,不要理解为TMB,你懂得; NB就是NB。来来来,大家跟我一起唱起来:我的名字叫MB ,玩转数据就是NB! 来来来,大家一起high起来…

原句:一参一位较随意,咋写咋都对。

翻译:对于在insert的时候,如果是一个参数的话,只要参数和参数占位符对应即可,数据插入成功。

原句:两参两位很挑剔,参数名称需定义。

翻译:如果是两个参数的话, 那么对于参数的话,就需要使用@param指定参数的名称,才能插入成功,否则就会报上面的异常信息了。那为什么无法识别呢???看下面解说。

 

5.3 宝典实战

       看如下代码:

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

 

       在一开始的时候,我们就说了,这个代码就会报如下的错误,那怎么解决呢?翻一下宝典找到:“两参两位有规则,参数名称需定义”。OH, SO DES  NI,那就参数定义名称个名称,它就认识了呗,修改为如下:

@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,password) values(#{name})")
public void save(String name);

 

当 insert 语句中只有一个参数的,对应的void save方法不需要做任何特殊处理(不需要加@Param也是可以对应上的)。

当有多个参数的时候,需要使用@Param注解进行字段的对应,这是why?

这是因为mybatis当多参数的话,最终是转换成map进行接收参数的,如果未使用@param进行参数名称的定义的话,那么map中的key就是参数的位置0,1或者是param1、param2,这样在使用map.get(key)的时候,就无法获取到相应的值了。

 

 

【宝典库】

 

Spring Boot葵花宝典:小试牛刀:Unrecognized Windows Sockets error: 10106

 

Spring Boot葵花宝典:初出茅庐

 

Spring Boot葵花宝典:初现江湖

 

 

「SpringCloud视频最近更新:

 

24. 覆写Feign的默认配置Configuration之Contract
25. Spring Cloud中关于Feign的常见问题总结
26. 解决Spring Cloud中FeignRibbon第一次请求失败的方法
27. Feign添加 fallbackFactory 属性来触发请求进行容灾降级
28. 断路器Hystrix总结
29. Health Indicator(健康指标) 和metrics stream(指标流)
30. 断路器监控(Hystrix Dashboard)
31. 断路器聚合监控(turbine)

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

微信公众号「SpringBoot最近更新:

 

Java8新特性:接口的默认方法
208. Spring Boot Swagger2:排序 – 漂游记
207. Spring Boot Swagger2:极简方式
我读的书很多,但都没有你好看【一禅录】
206. Spring Boot 2.0 Swagger2:使用
205. Spring Boot 2.0 Swagger2:初识Swagger
当要离开的时候,我却动情了
205. jetcache:你需要知道的小技巧
204. jetcache:在Spring Boot中怎么玩?
遇见阿里,遇见自己
203. 阿里jetcache
202. 阿里Pandora Boot
微信公众号赞赏功能升级了,真的假的?
《喜剧之王》「我养你啊」之人生选择
201. Spring Boot JNDI:Spring Boot中怎么玩JNDI
510阿里日,马老师献上最走心、最科技范儿证婚词~
200. Spring Boot JNDI:在Tomcat中怎么玩JNDI?
199. Spring Boot JNDI:这是虾米?
Spring Boot 数据库迁移系列
Spring Boot葵花宝典:初露锋芒:MyBatis insert异常 Parameter 'name' not found
198. Spring Boot Flyway工作原理

 搜索springboot或者扫描以下二维码即可关注:

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics