mysql获取插入的id主键

long _retId = -1;
        Connection con = null;
        try {
            con = queryRunner.getDataSource().getConnection();
            queryRunner.update(con, sql.toString(), val);
            Object _ret = queryRunner.query(con, "SELECT LAST_INSERT_ID() FROM " + getTableName(), new ScalarHandler());
            if (_ret instanceof BigInteger) {
                _retId = ((BigInteger) _ret).longValue();
            } else if (_ret instanceof Long) {
                _retId = (Long) _ret;
            } else {
                _retId = ((Integer) _ret).longValue();
            }
        } catch (SQLException e) {
            throw e;
        } finally {
            ConnectionUtils.closeConnection(con);
        }

注意:必须使用同一个Connection,否则会获取不到想要的结果

原文地址:https://www.cnblogs.com/nizuimeiabc1/p/8137510.html

时间: 2024-12-08 17:58:18

mysql获取插入的id主键的相关文章

MyBatis+MySQL 返回插入记录的主键ID

今天用到了多个表之间的关系,另一个表中的一个字段要以第一个表的主键作为外键. 下面说两种方法,MyBatis+MySQL 返回插入记录的主键ID: 第一种: <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User"> insert into us

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿实际的案例来说服他,所以准备做一个详细的测试.   作为互联网公司,一定有用户表,而且用户表UC_USER基本会有百万记录,所以在这个表基础上准测试数据来进行测试.            测试过程是目前我想到的多方位的常用的几种类型的sql进行测试,当然可能不太完善,欢迎大家留言提出更加完善的测试方

MySQL获取其他表的主键

通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键.本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值: 通过JDBC2.0提供的insertRow()方式 通过JDBC3.0提供的getGeneratedKeys()方式 通过SQL select LAST_INSERT_ID()函数 通过SQL @@IDENTITY 变量 1. 通过JDBC2.0提供的insertRow()方式 自jdbc2.0以来,可以通过下面的方式

JDBC:元数据 &amp;&amp; 获取插入记录的主键值 &amp;&amp; _JDBC_处理 Blob

一.元数据 DatabaseMetaData类 DatabaseMetaData 类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息: getURL():返回一个String类对象,代表数据库的URL. getUserName():返回连接当前数据库管理系统的用户名. isReadOnly():返回一个boolean值,指示数据库是否只允许读操作. getDatabaseProductName():返回数据库的产品名称. getDatabaseProductV

mybaits中插入到mysql数据库自动返回id主键

在做电商项目时,做到添加商品时,添加商品涉及到图片表和最小销售单元表,这两个表有商品的id,添加图片和最小销售单元,要先返回产品的id.具体做法如下 <insert id="addProduct" parameterType="Product" useGeneratedKeys="true" keyProperty="id"> 插入语句 </insert> 其中id表示的是dao中的添加方法, para

转: MYSQL获取更新行的主键ID

在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时常见的方案有两种: 方案一:使用一张表,新手卡和领取记录都在一起,这样主要字段就是新手卡(主键).用户ID(惟一).领取状态(非必要)等 这样的话数据库操作就简单了,直接一条update sql,将用户id更新到这张表里,然后根据用户ID再select出来就好了.但这样记录很多时就会有效率的问题,暂

MYSQL获取更新行的主键ID 【转】

在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时常见的方案有两种: 方案一:使用一张表,新手卡和领取记录都在一起,这样主要字段就是新手卡(主键).用户ID(惟一).领取状态(非必要)等 这样的话数据库操作就简单了,直接一条update sql,将用户id更新到这张表里,然后根据用户ID再select出来就好了.但这样记录很多时就会有效率的问题,暂

mysql获取自动生成的主键报错:Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.execu

今天项目中需要获取刚插入的自动增长 的主键值: pstmt=conn.prepareStatement(sql); ... rs=pstmt.getGeneratedKeys(); 谁知道报错:Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.execu 上网查了之后才知道原来是5.1.5的包,替换成5.1.17之后,如下生成主键的代码都会报错: Gener

初学JDBC,获取插入记录的主键、执行批量操作

一.获取插入记录主键值 在创建语句的地方使用Statement.RETURN_GENERATED_KEYS标识一下,然后通过getGeneratedKeys方法获得 preparedStatement=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); preparedStatement.excuteUpdate(); resultSet=preparedStatement.getGeneratedKeys();//主键有可能有