`
baalwolf
  • 浏览: 351326 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用JDBC获得INSERT插入后生成的主键ID

 
阅读更多
ps = conn.prepareStatement("insert into test(name) value(?)",Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "test");
ps.execute();
rs = ps.getGeneratedKeys();
int id=0;//保存生成的ID
if (rs != null&&rs.next()) {
    id=rs.getInt(1)
}


有时候,在用insert插入数据后,想获得刚插入记录的ID,可以利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID。本例数据库为mysql,主键ID为int类型,用auto_increment生成。





以下为主要的java代码 :
ps = conn.prepareStatement("insert into test(name) value(?)",Statement.RETURN_GENERATED_KEYS); 
ps.setString(1, "test"); 
ps.execute(); 
rs = ps.getGeneratedKeys(); 
int id=0;//保存生成的ID  
if (rs != null&&rs.next()) { 
    id=rs.getInt(1) 

ps = conn.prepareStatement("insert into test(name) value(?)",Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "test");
ps.execute();
rs = ps.getGeneratedKeys();
int id=0;//保存生成的ID
if (rs != null&&rs.next()) {
    id=rs.getInt(1)
}

本例用到的主要方法为以下两个,可以查阅JDK参考文档:

1、PreparedStatement prepareStatement ( String sql, int autoGeneratedKeys) throws SQLException(在java.sql.Connection接口中)

2、ResultSet getGeneratedKeys () throws SQLException(在java.sql.PreparedStatement 接口中)
分享到:
评论

相关推荐

    jdbc 插入记录并返回自增主键值

    为了获取这个值,我们需要在插入语句中使用`LAST_INSERT_ID()`函数,并在`Statement`对象上设置`RETURN_GENERATED_KEYS`属性: ```java try (Connection conn = DriverManager.getConnection(url, user, password))...

    mysql的插入问题 怎么获得自动增长的ID

    ### MySQL的插入问题:如何获取自动增长的ID ...在使用Java程序通过JDBC接口插入记录时,推荐使用`PreparedStatement`的`getGeneratedKeys()`方法来获取自动生成的ID,以确保数据的完整性和安全性。

    jdbc保存对象返回一个主键

    本文将重点讲解如何使用JDBC保存一个Java对象到数据库,并获取插入后自动生成的主键值。 #### 二、关键概念 1. **PreparedStatement**:预编译的SQL语句,它可以提高执行效率,并有助于防止SQL注入攻击。 2. **...

    解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()

    在使用Hibernate JPA进行数据操作时,我们可能会遇到一个特定的情况,即在执行完插入(insert)操作后,系统会自动执行一个`select last_insert_id()`的查询来获取刚刚生成的自增主键值。这个问题在Spring MVC集成...

    08_ibatis教程_sql主键生成方式.rar

    在Ibatis中,只需在Mapper XML文件中的`<insert>`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...

    支持主键自增的数据库获取主键值.zip

    在对应的Java代码中,当你调用`sqlSession.insert("insertUser", user)`方法插入一条记录后,`user.getId()`就会返回数据库自动生成的主键值。这是因为MyBatis通过`useGeneratedKeys`和`keyProperty`属性与数据库...

    用JDBC编写新闻页面

    在MySQL部分,项目可能涉及到了数据库的设计,包括创建新闻表,定义字段如ID(主键)、标题、内容、发布日期等。SQL语句如`CREATE TABLE`、`INSERT INTO`、`SELECT`、`UPDATE`和`DELETE`等都会在项目中得到应用。 ...

    spring boot整合mybatis利用Mysql实现主键UUID的方法

    `tk.mybatis.mapper.common.IdsMapper`则提供了处理主键ID的基本操作。 在Mapper接口中,你可以像平常一样定义CRUD方法。由于使用了UUID作为主键,插入数据时MyBatis会自动为新记录生成一个UUID。例如: ```java ...

    mybatis获取自增ID

    在MyBatis中,可以通过在`<insert>`标签中添加`useGeneratedKeys="true"`和`keyProperty`属性来自动获取并填充插入语句后返回的自增ID值。 **示例代码:** ```xml <insert id="insert" parameterType=...

    Struts2 JDBC 增删改查

    1. **增加(Insert)**:使用JDBC的PreparedStatement对象,可以创建预编译的SQL插入语句,将用户输入的数据安全地插入到数据库中。记得在事务管理中正确提交或回滚操作。 2. **删除(Delete)**:通过编写删除特定...

    SpringJDBC训练素材.zip

    对于插入操作,Spring JDBC提供了SimpleJdbcInsert类,它可以自动生成INSERT语句并处理主键自增的问题。对于存储过程的调用,SimpleJdbcCall则扮演了关键角色,它可以方便地包装和执行数据库的存储过程。 在实际...

    mysql取得自动增长的主键值

    - **标准方法:** 使用`INSERT`语句插入数据后,可以通过`LAST_INSERT_ID()`函数或`getGeneratedKeys()`方法来获取刚插入记录的自增ID。 - **示例代码:** 下面的Java示例展示了如何使用JDBC API来插入一条记录并...

    MybatisPlus中插入数据后获取该对象主键值的实现

    // 设置主键IdType为 AUTO,表示数据库ID自增 @TableId(value = "id", type = IdType.AUTO) private Integer id; private String lastName; private String email; private Integer gender; private Integer...

    mybatis3.3.1

    其次,MyBatis 3.3.1 支持返回主键的功能,这对于那些需要在插入后立即获取新生成主键的应用非常有用。在MySQL等支持自增主键的数据库中,可以通过设置useGeneratedKeys="true"和keyProperty="id"来实现这一功能: ...

    Spring对JDBC的支持

    在这个例子中,`SimpleJdbcInsert`类被用来简化插入操作,而`executeAndReturnKey()`方法执行插入并返回新生成的主键。 3. **使用JdbcTemplate进行数据库查询** 查询操作可以使用`query()`方法完成,它可以接受...

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    总结来说,要在MyBatis-Plus中利用Oracle Sequence生成主键,需完成数据库Sequence的创建、项目配置(包括JDBC驱动、数据源、全局配置)、实体类注解以及数据库操作。这样的设置确保了在插入新记录时,MyBatis-Plus...

    spring 中的jdbc

    2. `SimpleJdbcInsert`:这是一个专门用于插入数据的工具类,可以自动生成INSERT语句,并自动处理主键生成策略。 3. `SimpleJdbcCall`:用于调用存储过程和函数,支持输入、输出和InOut参数。 4. `...

    Itext5生成PDF报表

    在生成PDF报表时,我们可以利用`Document`类来定义文档结构,`Paragraph`、`List`等类添加文本内容,`Table`类创建表格,`Font`类设置字体样式,以及`Image`类插入图片。例如: ```java Document document = new ...

Global site tag (gtag.js) - Google Analytics