传递InsertProvider mybatis-annotation列表 - 非法参数异常

时间:2015-11-11 05:05:29

标签: java mybatis

我想用mybatis插入多行。我得到了巨大的帮助w.r.t xml mapping。我想用mybatis注释来做。 所以我使用了Insertprovider并传递了列表。我得到非法论证异常...... 代码

@InsertProvider(type=SqlHelper.class,method="insertList")
public void addCartItemList(List<CartItem> list);

public class SqlHelper {
public String insertList(List<CartItem> list){}}

我不确定为什么会收到非法的参数异常,因为我发送相同类型的参数。 有没有办法在注释中实现这一点而不使用Insertprovider? 如果是这样,这是实现(带注释)的最佳方式。 提前谢谢。

添加了例外

SEVERE:Servlet [dispatcher]的Servlet.service()在路径[/ context]的上下文中引发异常[请求处理失败;嵌套异常是org.mybatis.spring.MyBatisSystemException:嵌套异常是org.apache.ibatis.builder.BuilderException:调用SqlProvider方法时出错(com.madad.grocery.apnabag.persistance.SqlHelper.insertList)。原因:java.lang.IllegalArgumentException:参数类型不匹配]有根本原因 java.lang.IllegalArgumentException:参数类型不匹配

1 个答案:

答案 0 :(得分:1)

最后我找到了答案。

public String insertList(List<CartItem> list){}}.

虽然我发送列表,但Mybatis希望该参数为StrictMap类型。 所以,我修改了我的代码

    public String insertList( Object list1){
    StrictMap map=(StrictMap) list1;
    List<CartItem> list=(List<CartItem>) map.get("collection");
  }

我得到了例外,因为它无法直接输入。想到这对某人可能有用。