文档章节

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

Clover286
 Clover286
发布于 2017/02/25 10:32
字数 216
阅读 328
收藏 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
武汉
程序员
Mybatis参数处理

1、单个参数 mybatis不做特殊处理,只需要用 #{参数名} 取出参数值就可以了 。 注:事实上这里#{id},参数名id可以写任何值,因为只有传了一个参数。 2、多个参数 mybatis会做特殊处理。 多...

小衰哥有点帅
02/09
8
0
mybatis处理集合和循环数组问题

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

岳静
2012/07/19
0
3
springboot项目中遇到的bug

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

ben4
2017/05/20
0
0
MyBatis中#和$的区别

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

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

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

房上的猫
08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

驼峰变量名的转换

package com.mmall.test;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 需求:1. 将字符串 user_name_abc 转换为 userNameAbc * 2. 将字符串 us......

蚂蚁-Declan
28分钟前
5
0
HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。 HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 序号 方...

踏破铁鞋无觅处
32分钟前
2
0
知识点043-selenium自动化测试网页工具的使用

【摘要】 Selenium是一个主要用于Web应用自动化测试的工具集合。但其作用不仅仅局限于测试领域,还可以用于浏览器行为模拟以及屏幕抓取等,在行业内有着广泛的应用。Selenium支持主流的浏览器...

侠客行之石头
39分钟前
1
0
B250F I219V安装windows server 网卡驱动

https://blog.csdn.net/ryu2003/article/details/50855146

梦想游戏人
39分钟前
1
0
MacOS Install Docker

使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker。 Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装: $ brew cask install dock...

Linux就该这么学
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部