(转)通过getGeneratedKeys()获取主键

通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键,这时候通常用getGeneratedKeys()方法获取主键
1. 获得数据库返回的主键
           insert into book values(null,‘编程珠玑‘,45);
  2. 获得主键的步骤
            conn.prepareStatement(sql,autoGeneratedKeys)
            autoGeneratedKeys是一个int值 ,1代表返回生成的主键,2代表不返回生成的主键;为了方便记忆,使用                 Statement.Statement.RETURN_GENERATED_KEYS,Statement.NO_GENERATED_KEYS
3.获得生成的主键
  ResultSet rs=ps.getGeneratedKesy();
  rs.next();
  int userno= rs.getInt(1);
Statement stmt = null;
ResultSet rs = null;
try {
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                                java.sql.ResultSet.CONCUR_UPDATABLE);
    // ...
    // 省略若干行(如上例般创建demo表)
    // ...
    stmt.executeUpdate(
            "INSERT INTO autoIncTutorial (dataField) "
            + "values (‘Can I Get the Auto Increment Field?‘)",
            Statement.RETURN_GENERATED_KEYS);                      // 向驱动指明需要自动获取generatedKeys!
    int autoIncKeyFromApi = -1;
    rs = stmt.getGeneratedKeys();                                  // 获取自增主键!
    if (rs.next()) {
        autoIncKeyFromApi = rs.getInt(1);
    }  else {
        // throw an exception from here
    }
    rs.close();
    rs = null;
    System.out.println("Key returned from getGeneratedKeys():"
        + autoIncKeyFromApi);
}  finally { ... }    

原文地址:https://www.cnblogs.com/wrkjwl/p/9229217.html

时间: 2024-07-31 14:37:16

(转)通过getGeneratedKeys()获取主键的相关文章

Mybatis执行insert语句,获取主键

一般的insert操作返回的是受影响行数,如果要获得新增加的那一行的主键,有两种方式可以实现. 方法1(推荐): <insert id="addAuthor" parameterType="domain.Author" useGeneratedKeys="true" keyProperty="id"> insert into author(username,password,email,bio) values(#{

Mybatis 插入insert操作时获取主键

转载于 http://blog.csdn.net/lklinkang/article/details/6185927 插入操作 对于自增主键的表,插入可以不配置插入的主键列.否则是必须的. 获取主键      插入语句之前配置:主要是针对Sequence主键而言,插入前必须指定一个主键值给要插入的记录.Oracle.DB2亦如此,方法是在插入语句标签<insert....>之前配置上: <insert id="AltName.insert" parameterType

SQL Server 主表主键自增量,如何获取主键呢?

开发过程中经常存在主表的主键是自增量的情况,需要获取增量值才能插入字表数据,获取方法如下三种: IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值. @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值. SCOPE_IDENTITY() 返回为当前会话和当前作用域中的某个表生成的最新标识值. 推荐使用IDENT_CURRENT ,不容易因为域和表产生错误值. 参考资料: 1.http://www.cnblogs.com/Gin-23333/p/3

mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获取到插入数据的主键来保障后续操作,数据库中主键一般我们使用自增或者uuid()的方式自动生成 问题:对于uuid使用Java代码生成的方式还比较容易控制,然而使用数据库生成的主键,这样我们就需要将插入的数据再查询出来得到主键,某些情况下还可能查询到多条情况,这样就比较尴尬了. 那有什么办法来插入数据

mybatis自动生成后无法获取主键id问题

使用mybatis的自动生成工具生成的主键id: <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" > SELECT LAST_INSERT_ID()</selectKey> 使用sharding-jdbc时候 一直提示 分片报错, 可以使用这种方式解决: <insert id="insertSelective&

Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)

1.通过Oracle序列 -- Create sequence create sequence SEQ_DW_EWSYSTEM minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 20; <insert id="insertEwsystem" parameterType="Ewsystem"> <selectKey keyProperty

Mybaties保存后自动获取主键ID

<!-- 插入记录 --> <insert id="saveTvTypeBatch" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List"> <selectKey resultType="long" keyProperty="id" order="AFTER&

SQLite 获取主键列名

pragma table_info ('tablename') 判断 pk 列是否为1,name即为列名

spring Jdbc自动获取主键。

学习了下springjdbc,感觉挺实用的,相对来说springjdbc 扩展性相当好了 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework