1

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

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(无需从用户那里进行额外的 select * ...)?

4

1 回答 1

0

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

因此,您的调用将是存储过程,传递该INSERT部件所需的任何参数,然后是上述内容。

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

返回的 ID 是相对于这个连接的,屏蔽了其他用户的任何干扰,并且在任何对象返回到连接池之前。

幸运的是,这些类型的调用在大多数情况下并不常见。

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

于 2016-08-05T19:38:12.950 回答