JDBCtemplate:获取插入数据的自动生成密钥

时间:2017-12-28 08:41:36

标签: java jdbctemplate

我想知道,如何使用jdbctemplate获取插入数据的Id?我可以在Php中做到这一点,但我不知道如何在java中做到这一点。 我搜索了文档,发现了executeAndReturnKey(..)但我的jdbctemplate不识别这个类(只有.execute())。

请。帮助我

2 个答案:

答案 0 :(得分:4)

您可以将KeyHolderJdbcTemplate

一起使用
KeyHolder generatedKeyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
    @Override
    public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
        PreparedStatement statement = connection.prepareStatement("Your Insert/Update Query", Statement.RETURN_GENERATED_KEYS);
        // set values in query
        return statement;
    }
}, generatedKeyHolder);

Number id = generatedKeyHolder.getKey();
// Use this Number to get id with feasible type long, int etc.
// For example,
// int myId = id.intValue();

答案 1 :(得分:2)

例如,

SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(dataSource)  
                                    .withTableName("EMPLOYEE")  
                                    .usingGeneratedKeyColumns("ID");  


Number id = simpleJdbcInsert.executeAndReturnKey(parameters);  
System.out.println("Generated id - " + id.longValue());