有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用ApacheDbutils获取自动递增生成的密钥,不带语句

我不使用语句来执行查询。这些方法看起来像

public static int insertIntoUserTable (String username, String password) {
        String query = "insert into user (username, password) values (?, ?)";
        QueryRunner run = new QueryRunner(FeedDbDataSource.getDataSource());
        ResultSetHandler<User> resultHandler = new BeanHandler<>(User.class);
        try {
            run.insert(query, resultHandler, username, password);
        } catch (SQLException e) {
            // handle
        }
        return ;
    }

如何获取插入行的id(无需从用户where…)进行额外选择*


共 (1) 个答案

  1. # 1 楼答案

    注意到奥利删除的答案只对某些人可见,我将创建一个存储过程。它执行INSERT,然后在INSERT调用之后的末尾返回一个1行1列的结果集LAST_INSERT_ID()

    因此,您将调用存储的proc,传递为INSERT部分拾取的任何必要参数,然后是前面提到的参数

    INSERT student (lastname, ...) values (pLastName, ...); 
    SELECT LAST_INSERT_ID() AS `ai_id`;   ai_id becomes the column name
    

    返回的ID与此连接相关,在将任何对象返回到连接池之前,不会受到其他用户的任何干扰

    幸运的是,这些类型的呼叫在大多数情况下并不频繁

    如果您需要有关存储过程包装器的帮助,请询问