文档章节

传多个参数导致mybatis识别不出参数名

Clover286
 Clover286
发布于 2017/02/25 10:32
字数 216
阅读 359
收藏 1

下面这个dao层的接口,里面传了3个参数进去,

public int insertOrderMapProducts(int orderId,int productsId,int amount);

下面是mybatis的map xml配置

<insert id="insertOrderMapProducts" parameterType="int">
		INSERT
		INTO
		shop_orderandproducts(orderId,productsId,amount)
		VALUES
		(#{orderId},#{productsId},#{amount});
	</insert>

以上情况会报错:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'orderId' not found. Available parameters are [0, 1, 2, param3, param1, param2]

重点是:

Parameter 'orderId' not found

意思是mybatis没找到orderId这个参数,为什么呢?怎么办?

原因:Java是用arg0,arg1代表参数的,所以mybatis无法识别这3个参数名

解决方案:

方法1:把这个3个参数封装到一个entity实体类中,直接把该实体类作为参数传进去

方法2:加入mybatis注解@Param,告诉mybatis参数的名字,如下:

public int insertOrderMapProducts(@Param("orderId") int orderId, @Param("productsId") int productsId,
			@Param("amount") int amount);

 

© 著作权归作者所有

共有 人打赏支持
Clover286
粉丝 8
博文 199
码字总数 65713
作品 0
武汉
程序员
私信 提问
springboot项目中遇到的bug

启动项目的时候报错 情形一 解决方法: 在yml配置文件中加入,因为默认的话是 情形二 在集成mybatis时mapper包中的类没被扫描 解决方法: 在springboot的启动类中加入 或者直接在Mapper类上面...

ben4
2017/05/20
0
0
mybatis处理集合和循环数组问题

在使用foreach的时候最容易出错的就是collection属性,该属性是必须指定的,在不同情况 下,该属性的值是不一样的,主要有一下3种情况: 1. 如果传入的是单参数且参数类型是一个List的时候,...

岳静
2012/07/19
0
3
MyBatis中#和$的区别

MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型。 在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者$...

觉皇
2016/04/14
154
0
MyBatis 从浅入深 随笔整理

MyBatis? archetypeCatalog = internal 本文档单独出现的_parameter都标识为变量名 一.三个基本要素: 核心接口和类 MyBatis 核心配置文件 SQL映射文件 二.核心接口和类: 结构图: (1)...

房上的猫
2018/08/14
0
0
Mybatis中#{}和${}传参的区别及#和$的区别小结

最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"",比如 select * from ...

必须往前走
01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
33分钟前
0
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
49分钟前
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
1
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
1
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部