我想用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:参数类型不匹配
答案 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");
}
我得到了例外,因为它无法直接输入。想到这对某人可能有用。