java如何读取自增字段值

java如何读取自增字段值

作者:Rhett Bai发布时间:2026-02-27阅读时长:0 分钟阅读次数:6

用户关注问题

Q
在Java中如何获取数据库表的自增字段值?

我在使用Java操作数据库时,插入一条数据后,想获取数据库生成的自增主键值,有什么方法可以实现?

A

使用JDBC获取自增字段值的方法

可以在通过PreparedStatement执行插入操作时,使用RETURN_GENERATED_KEYS参数,然后调用getGeneratedKeys()方法获取自动生成的主键值。示例代码:

PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
}

Q
MyBatis框架中怎么获取插入记录的自增ID?

我使用MyBatis进行数据库操作,如何配置和获取新增记录的自增主键?

A

MyBatis获取自增ID的配置与实现

在MyBatis中,可以在Mapper的insert语句中加入useGeneratedKeys="true"和keyProperty="id"属性,配置如下:

INSERT INTO user(name) VALUES(#{name})

插入操作后,User对象的id属性会自动填充为数据库自增的主键值。

Q
使用Spring JdbcTemplate如何获取插入数据的自增主键?

在Spring框架中使用JdbcTemplate时,插入数据后如何获取插入记录的自增ID?

A

Spring JdbcTemplate获取自增主键示例

可以使用KeyHolder接口结合PreparedStatementCreator执行插入操作。例如:

KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
// 设置参数
return ps;
}, keyHolder);

Number key = keyHolder.getKey();
int generatedId = key.intValue();