下面这个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);