java.sql.Connection接口提供了三个在执行插入语句后可取的自动生成的主键的方法。
2 |
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException;
|
3 |
其中autoGenerateKeys 有两个可选值:Statement.RETURN_GENERATED_KEYS、Statement.NO_GENERATED_KEYS |
5 |
PreparedStatement prepareStatement(String sql, int [] columnIndexes) throws SQLException;
|
7 |
PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLEception;
|
02 |
public int [] insert(List<Person> persons) throws SQLException{
|
03 |
String sql = "insert into test_table(name) values(?)" ;
|
05 |
int rowCount = persons.size() ;
|
06 |
int [] keys = new int [rowCount] ;
|
07 |
DataSource ds = SimpleDBSource.getDB() ;
|
08 |
Connection conn = ds.getConnection() ;
|
10 |
String[] columnNames= { "id" } ;
|
11 |
PreparedStatement pstmt = conn.prepareStatement(sql, columnNames) ;
|
13 |
for (i = 0 ; i < rowCount ; i++){
|
15 |
pstmt.setString( 1 , p.getName()) ;
|
18 |
pstmt.executeBatch() ;
|
20 |
ResultSet rs = pstmt.getGeneratedKeys() ;
|
21 |
while (rs.next() && i < rowCount){
|
22 |
keys[i] = rs.getInt( 1 ) ;
|
分享到:
相关推荐
对于具有自增主键的表,MySQL会自动为新插入的记录生成主键值。为了获取这个值,我们需要在插入语句中使用`LAST_INSERT_ID()`函数,并在`Statement`对象上设置`RETURN_GENERATED_KEYS`属性: ```java try ...
本文将重点讲解如何使用JDBC保存一个Java对象到数据库,并获取插入后自动生成的主键值。 #### 二、关键概念 1. **PreparedStatement**:预编译的SQL语句,它可以提高执行效率,并有助于防止SQL注入攻击。 2. **...
标题"java使用jdbc插入信息时获取id1"指的是在Java程序中,通过JDBC执行SQL插入语句后,如何获取数据库自动生成的唯一标识符(通常是主键ID)。描述中的"设置成可以获取主键"是关键步骤,这可以通过调用`...
在Ibatis中,只需在Mapper XML文件中的`<insert>`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...
新闻页面的实现还可能涉及到动态网页技术,如JSP(JavaServer Pages)或Servlet,它们与JDBC结合,接收用户的请求,通过JDBC获取新闻数据,然后动态生成HTML响应返回给用户。 总结来说,"用JDBC编写新闻页面"这个...
- 另外,为了提高代码质量,Model类还可以添加注解,如`@Table`(表示对应数据库表)、`@Id`(标识主键)、`@Column`(指定列名)等,这在使用某些ORM框架时是必需的。 2. **Mapper文件生成**: - Mapper接口定义...
- **应用场景**:适用于需要高效生成主键且支持JDBC 3特性的数据库。 ### 总结 不同的主键生成策略各有特点和适用场景,开发者应根据具体的应用需求和数据库特性来选择合适的策略。例如,如果应用程序需要高性能...
3. **Statement的getGeneratedKeys()方法**:返回由INSERT、UPDATE或DELETE语句生成的自动增长键,这对于获取新插入行的主键非常有用。 4. **RowSet接口的增强**:JDBC6支持类型4的JavaBeans Compliant RowSets,...
### MySQL的插入问题:如何获取自动增长的ID ...在使用Java程序通过JDBC接口插入记录时,推荐使用`PreparedStatement`的`getGeneratedKeys()`方法来获取自动生成的ID,以确保数据的完整性和安全性。
1. **连接MySQL**:使用Java或Python等编程语言,通过JDBC或其他库连接到MySQL数据库,获取表信息。 2. **解析表结构**:查询MySQL的元数据信息,如字段名、字段类型、字段长度、是否为主键等。 3. **映射数据类型...
ORM框架允许我们用Java对象来操作数据库,而无需编写大量的JDBC代码。其中,实体类就是ORM框架中的关键部分,它代表了数据库表中的一个记录。 当提到"SQL自动生成Java代码",通常是指通过执行特定的SQL查询,自动...
它可以根据数据库表结构自动构建INSERT语句,并且支持返回新生成的主键值,这对于那些具有自动增长主键的表非常有用。 此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,...
5. **整合到项目**:将生成的文件导入到你的MyBatis项目中,通过配置Mapper扫描路径,确保Spring或Spring Boot可以找到这些Mapper接口,然后就可以在业务代码中直接使用了。 6. **优势与应用场景**:MyBatis自动...
项目中主键是通过sequence来自增的,这意味着数据库(如Oracle、PostgreSQL等支持序列的数据库)会自动为新记录生成唯一ID。在JDBC中,通常需要调用序列的nextval()函数来获取这个ID,然后插入到对应字段。 此外,...
- **生成Bean和配置文件**:使用工具如DAOTool自动生成与数据库表对应的Java Bean类和配置文件。 - **创建DAOFactory**:根据配置文件创建DAOFactory实例,用于获取DAO对象。 - **创建DAO**:通过DAOFactory创建...
- **作用**:实现ORM保存记录的功能,即根据传入的对象自动构建插入SQL语句并执行插入操作。 - **实现细节**: - 调用私有方法`getInsertsql()`生成SQL语句。 - 获取对象的所有字段值并通过`getValues()`方法。 ...
例如,假设我们有一个名为`users`的表,其中`id`字段是主键,需要自动生成。存储过程可能如下: ```sql DELIMITER // CREATE PROCEDURE GenerateNewUserID() BEGIN DECLARE maxID INT; SELECT MAX(id) INTO maxID...
在本项目中,开发者将使用JDBC来建立与MySQL数据库的连接,执行SQL语句,如查询和插入。需要注意的是,为了确保安全,通常会使用PreparedStatement来防止SQL注入攻击。 数据库部分,我们有一个名为`test`的数据库,...
3. SimpleJdbcInsert/NamedParameterJdbcInsert:用于简化插入操作,可以自动处理主键生成。 4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC...
在对应的Java代码中,当你调用`sqlSession.insert("insertUser", user)`方法插入一条记录后,`user.getId()`就会返回数据库自动生成的主键值。这是因为MyBatis通过`useGeneratedKeys`和`keyProperty`属性与数据库...