当我通过jdbctemplate在表中插入记录时,如何获取自动增加的id

bir*_*rdy 13 java mysql spring-mvc jdbctemplate

private void insertIntoMyTable (Myclass m) {
    String query = "INSERT INTO MYTABLE (NAME) VALUES (?)";
    jdbcTemplate.update(query, m.getName());
}
Run Code Online (Sandbox Code Playgroud)

当上面的查询插入记录时,ID表中的列会自动增量.

有没有办法在插入时获得这个自动递增的ID.所以在这个例子中我的方法的返回值是int

Ans*_*shu 16

检查此参考.您可以使用jdbcTemplate.update:

编辑 按要求添加了导入

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
Run Code Online (Sandbox Code Playgroud)

以下是代码用法:

final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);
// keyHolder.getKey() now contains the generated key
Run Code Online (Sandbox Code Playgroud)