mybatis批量插入返回主键问题

今天整合mybatis时候用到返回主键问题,批量插入总是返回不了主键还报错。

记录入下:

pom版本:

<mybatis.version>3.2.6</mybatis.version>

mybatis.xml:

<insert id="addUserBatch" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List" >
insert into userinfo (UserName,UserPwd) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.username},#{item.userpwd})
</foreach>
</insert>

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list]

这个版本有bug,升级版本为:

<mybatis.version>3.3.1</mybatis.version>

可以解决。

这里边还有一个问题,如何获取自增长的id:

public void test() {
// TODO Auto-generated method stub

UserInfo user = new UserInfo();
user.setUsername("mayijinfu");
user.setUserpwd("1234569");
UserInfo user2 = new UserInfo();
user2.setUsername("tianmao999999");
user2.setUserpwd("456");
ArrayList<UserInfo> arrayList = new ArrayList<UserInfo>();
arrayList.add(user);
arrayList.add(user2);
userService.addUserBatch(arrayList);
System.out.println("*******************************");
System.out.println("插入之后的主键user-id"+arrayList.get(0).getId());//从这可以看出,好像已经被持久化了,这个跟hibernate好像一直,有看大此博客的大神给解释////下。对于单个插入也是如此:user.getId(),即可获取主键id。
System.out.println("插入之后的主键user2-id"+arrayList.get(1).getId());
System.out.println("*******************************");

}

上一篇:分块+lazy 或者 线段树+lazy Codeforces Round #254 (Div. 2) E


下一篇:(转)浅谈MD5加密算法中的加盐值(SALT)