`

用JDBC3 插入记录返回自动生成的主键

    博客分类:
  • ORM
阅读更多

  java.sql.Connection接口提供了三个在执行插入语句后可取的自动生成的主键的方法。

1 //第一个是
2 PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throwsSQLException;  
3 其中autoGenerateKeys 有两个可选值:Statement.RETURN_GENERATED_KEYS、Statement.NO_GENERATED_KEYS       
4 //第二个是
5 PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException;
6 //第三个是
7 PreparedStatement prepareStatement(String sql, String[] columnNames)throws SQLEception;

 

01 //批量插入Person实例,返回每条插入记录的主键值
02 public int[] insert(List<Person> persons) throws SQLException{
03     String sql = "insert into test_table(name) values(?)" ;
04     int i = 0 ;
05     int rowCount = persons.size() ;
06     int[] keys = new int[rowCount] ;
07     DataSource ds = SimpleDBSource.getDB() ;
08     Connection conn = ds.getConnection() ;
09     //根据主键列名取得自动生成主键值
10     String[] columnNames= {"id"} ;
11     PreparedStatement pstmt = conn.prepareStatement(sql, columnNames) ;
12     Person p = null ;
13     for (i = 0 ; i < rowCount ; i++){
14         p = persons.get(i) ;
15         pstmt.setString(1, p.getName()) ;
16         pstmt.addBatch();
17     }
18     pstmt.executeBatch() ;
19         //取得自动生成的主键值的结果集
20     ResultSet rs = pstmt.getGeneratedKeys() ;
21     while(rs.next() && i < rowCount){
22         keys[i] = rs.getInt(1) ;
23         i++ ;
24     }
25     return keys ;
26 }

分享到:
评论

相关推荐

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

    对于具有自增主键的表,MySQL会自动为新插入的记录生成主键值。为了获取这个值,我们需要在插入语句中使用`LAST_INSERT_ID()`函数,并在`Statement`对象上设置`RETURN_GENERATED_KEYS`属性: ```java try ...

    jdbc保存对象返回一个主键

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

    java使用jdbc插入信息时获取id1

    标题"java使用jdbc插入信息时获取id1"指的是在Java程序中,通过JDBC执行SQL插入语句后,如何获取数据库自动生成的唯一标识符(通常是主键ID)。描述中的"设置成可以获取主键"是关键步骤,这可以通过调用`...

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

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

    用JDBC编写新闻页面

    新闻页面的实现还可能涉及到动态网页技术,如JSP(JavaServer Pages)或Servlet,它们与JDBC结合,接收用户的请求,通过JDBC获取新闻数据,然后动态生成HTML响应返回给用户。 总结来说,"用JDBC编写新闻页面"这个...

    java自动生成model和mapper的工具

    - 另外,为了提高代码质量,Model类还可以添加注解,如`@Table`(表示对应数据库表)、`@Id`(标识主键)、`@Column`(指定列名)等,这在使用某些ORM框架时是必需的。 2. **Mapper文件生成**: - Mapper接口定义...

    hibernate主键生成策略

    - **应用场景**:适用于需要高效生成主键且支持JDBC 3特性的数据库。 ### 总结 不同的主键生成策略各有特点和适用场景,开发者应根据具体的应用需求和数据库特性来选择合适的策略。例如,如果应用程序需要高性能...

    JDBC6和JDBC14

    3. **Statement的getGeneratedKeys()方法**:返回由INSERT、UPDATE或DELETE语句生成的自动增长键,这对于获取新插入行的主键非常有用。 4. **RowSet接口的增强**:JDBC6支持类型4的JavaBeans Compliant RowSets,...

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

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

    mysql数据抽取,自动生成hive建表语句

    1. **连接MySQL**:使用Java或Python等编程语言,通过JDBC或其他库连接到MySQL数据库,获取表信息。 2. **解析表结构**:查询MySQL的元数据信息,如字段名、字段类型、字段长度、是否为主键等。 3. **映射数据类型...

    sql自动生成java代码

    ORM框架允许我们用Java对象来操作数据库,而无需编写大量的JDBC代码。其中,实体类就是ORM框架中的关键部分,它代表了数据库表中的一个记录。 当提到"SQL自动生成Java代码",通常是指通过执行特定的SQL查询,自动...

    Spring Jdbc的jar包

    它可以根据数据库表结构自动构建INSERT语句,并且支持返回新生成的主键值,这对于那些具有自动增长主键的表非常有用。 此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,...

    mybatis框架自动生成工具

    5. **整合到项目**:将生成的文件导入到你的MyBatis项目中,通过配置Mapper扫描路径,确保Spring或Spring Boot可以找到这些Mapper接口,然后就可以在业务代码中直接使用了。 6. **优势与应用场景**:MyBatis自动...

    Struts2 JDBC 增删改查

    项目中主键是通过sequence来自增的,这意味着数据库(如Oracle、PostgreSQL等支持序列的数据库)会自动为新记录生成唯一ID。在JDBC中,通常需要调用序列的nextval()函数来获取这个ID,然后插入到对应字段。 此外,...

    基于JDBC实现的DAO

    - **生成Bean和配置文件**:使用工具如DAOTool自动生成与数据库表对应的Java Bean类和配置文件。 - **创建DAOFactory**:根据配置文件创建DAOFactory实例,用于获取DAO对象。 - **创建DAO**:通过DAOFactory创建...

    基于SpringJDBC的BaseDAO

    - **作用**:实现ORM保存记录的功能,即根据传入的对象自动构建插入SQL语句并执行插入操作。 - **实现细节**: - 调用私有方法`getInsertsql()`生成SQL语句。 - 获取对象的所有字段值并通过`getValues()`方法。 ...

    存储过程-自动生成编号

    例如,假设我们有一个名为`users`的表,其中`id`字段是主键,需要自动生成。存储过程可能如下: ```sql DELIMITER // CREATE PROCEDURE GenerateNewUserID() BEGIN DECLARE maxID INT; SELECT MAX(id) INTO maxID...

    jsp+servlet+jdbc注册登录入门项目

    在本项目中,开发者将使用JDBC来建立与MySQL数据库的连接,执行SQL语句,如查询和插入。需要注意的是,为了确保安全,通常会使用PreparedStatement来防止SQL注入攻击。 数据库部分,我们有一个名为`test`的数据库,...

    spring-jdbc-dao

    3. SimpleJdbcInsert/NamedParameterJdbcInsert:用于简化插入操作,可以自动处理主键生成。 4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC...

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

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

Global site tag (gtag.js) - Google Analytics