zoukankan      html  css  js  c++  java
  • 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("*******************************");

    }

  • 相关阅读:
    C++纯虚函数调用
    C++编译期数据结构 在不同的地方声明全局数组的初始值
    用虚拟机把ubuntu安装到TF卡上
    点击a链接打开第三方页面变成下载页面问题
    SRAM和DRAM的区别
    真值表生成逻辑表达式程序
    大端 小端
    vhdl rising_edge(clk) (clk'event and clk='1')的区别
    ROM、RAM、DRAM、SRAM、FLASH的区别
    同一个主机头的多域名绑定多个ssl证书的方法
  • 原文地址:https://www.cnblogs.com/wlhebut/p/6214021.html
Copyright © 2011-2022 走看看