zoukankan      html  css  js  c++  java
  • Mybatis插入数据后返回主键id

    有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。

    单条记录插入并返回

    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 keyProperty to the target property and you're done. For example, if the Authortable above had used an auto-generated column type for the id, the statement would be modified as follows。

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

      

    添加useGeneratedKeys="true" 以及keyProperty="id"即可。id为实体类中的字段名称

    多条记录插入并返回


    If your database also supports multi-row insert, you can pass a list or an array of Authors and retrieve the auto-generated keys.

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

      

    坑:要注意,多条记录时,有可能会出现id没有返回的情况。检查以下几点:

    1、Mybatis版本3.3.1及其以上。

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

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

  • 相关阅读:
    VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
    VMWare虚拟机下为Windows Server 2012配置静态IP(NAT方式)
    Windows 7防火墙阻止了远程桌面连接的解决方法
    Win10系统如何在防火墙里开放端口
    ECharts 定制 label 样式
    目标值柱状图
    echarts中datazoom相关配置
    环形图
    带时间轴的指标监控柱状图
    2020mysql面试题
  • 原文地址:https://www.cnblogs.com/z941030/p/9223393.html
Copyright © 2011-2022 走看看