zoukankan      html  css  js  c++  java
  • mybatis 获取insert返回的主键

    在我们开发过程中,在插入数据到数据库时,很多时候都需要把其主键返回,这里就说一下mybatis是怎么获取的。

    其中mysql和oracle是不同的做法,因为mysql本身就提供字段自增的属性,而oracle则需要使用序列。

    mysql

    <insert id="insert" parameterType="com.yitop.admin.domain.User" useGeneratedKeys="true" keyProperty="id">
    insert into users (id, user_name, password, 
      real_name, status, email, 
      created_at, updated_at)
    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{realName,jdbcType=VARCHAR}, #{status,jdbcType=BIT}, #{email,jdbcType=VARCHAR},
      #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP})
    </insert>
    

    配置中,keyProperty表示返回的id要保存到对象的那个属性中,这里的名字要和对象的字段名对应上。而useGeneratedKeys表示主键id为自增长模式。mysql的话只要加上这两个属性就可以了,加上后会自动把主键set到对象的属性上。

    oracle

    <insert id="insert" parameterType="com.yitop.admin.domain.User">
       <selectKey resultType="INTEGER" order="BEFORE" keyProperty="id">  
           SELECT SEQ_USER.NEXTVAL as id from DUAL
       </selectKey> 
        insert into users (id, user_name, password, 
          real_name, status, email, 
          created_at, updated_at)
        values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
          #{realName,jdbcType=VARCHAR}, #{status,jdbcType=BIT}, #{email,jdbcType=VARCHAR},
          #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP})
    </insert>
    

    因为oracle没有自增的说法,所以不能使用useGeneratedKeys了。而是使用selectKey把id获取并set到对象的属性中。

  • 相关阅读:
    阿里云SQL Server远程连接配置
    RSA签名验证无法通过,检查以下部分
    windows开机自动登录
    c# 进程调用exe
    JavaScript console控制台调试 post
    Tesseract-OCR 训练教程(二) 合并新的训练文件
    获取手机唯一标识
    sqlserver 日期与字符串之间的转换
    linq根据英文首字母姓名排序
    js调用浏览器下载
  • 原文地址:https://www.cnblogs.com/andyfengzp/p/6179073.html
Copyright © 2011-2022 走看看