zoukankan      html  css  js  c++  java
  • Mybatis批量插入返回自增主键(转)

    我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键:


    1、对于支持生成自增主键的数据库:useGenerateKeys和keyProperty。

    2、不支持生成自增主键的数据库:<selectKey>。


    但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。


    Mybatis官网资料提供如下:


    First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can simply set useGeneratedKeys="true" and set the Authortable above had used an auto-generated column type for the id, the statement would be modified as follows:

    
    
    1 <insert id="insertAuthor" useGeneratedKeys="true"
    2     keyProperty="id">
    3   insert into Author (username,password,email,bio)
    4   values (#{username},#{password},#{email},#{bio})
    5 </insert>
     

    If your database also supports multi-row insert, you can pass a list or an array of 

    1 <insert id="insertAuthor" useGeneratedKeys="true"
    2     keyProperty="id">
    3   insert into Author (username, password, email, bio) values
    4   <foreach item="item" collection="list" separator=",">
    5     (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
    6   </foreach>
    7 </insert>

    从官网资料可以看出Mybatis是支持批量插入时返回自增主键的。(百度上说不支持的,多打脸 开玩笑的)


    但是在本地测试的时候使用上述方式确实不能返回自增id,而且还报错(不认识keyProperty中指定的Id属性),然后在网上找相关资料。终于在Stackoverflow上面找到了一些信息。


    解决办法:

    1、升级Mybatis版本到3.3.1。

    2、在Dao中不能使用@param注解。

    3、Mapper.xml中使用list变量接受Dao中的集合。


    参考地址:

  • 相关阅读:
    通过ADB命令查看当前Android运行程序的页面信息
    C#中发起GET和POST请求的方法
    CocoaPods使用
    Carthage使用
    Mac终端常用命令和操作
    Mac OS环境变量配置
    Mac OS包管理器Homebrew
    js利用localStroage实现一个页面栈
    vue-cli快速搭建Vue脚手架 (vue-cli 3.x 模板)
    yarn和npm常用命令
  • 原文地址:https://www.cnblogs.com/kingxiaozi/p/7289669.html
Copyright © 2011-2022 走看看