网站首页
Java
站长
开源
框架
理论
JS
Linux
DB
服务器
NET
生活
软件
PHP
其他
您的位置:首页 > Java > JDBC 插入数据返回数据主键
JDBC 插入数据返回数据主键
2015-6-1    19160    2

常常在使用Hibernate、iBatis时候,当插入一条数据的时候,实体Bean的原空主键就赋上新值了。

在JDBC中,也可以通过变相的手法来做到这点。下面是个测试的小例子。

参考代码:

package com.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.Properties;
/**
 * 数据库连接对象管理类
 * @说明
 * @author cuisuqiang
 * @version 1.0
 * @since
 */
public class ConnectionManager {
	private static final String url = "jdbc:mysql://localhost:3306/test";
	private static final String username = "root";
	private static final String userpass = "root";
	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws Exception{
		Connection conn = getConnection();
		if (null != conn) {
			String sql = "insert into common_user (name) values(?)";
			// 指定返回生成的主键
            PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 
            // 如果使用静态的SQL,则不需要动态插入参数
            pstmt.setString(1, new Date().toLocaleString());
            pstmt.executeUpdate(); 
            // 检索由于执行此 Statement 对象而创建的所有自动生成的键 
            ResultSet rs = pstmt.getGeneratedKeys(); 
            if (rs.next()) {
                Long id = rs.getLong(1); 
                System.out.println("数据主键:" + id); 
            }
		}
	}
	public static Connection getConnection() {
		Connection conn = null;
		try {			
			com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
			Properties properties = new Properties();
			properties.put("user", username);
			properties.put("password", userpass);
			conn = driver.connect(url, properties);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
}


打印生成的主键。


注意这是一个系列的文章,注意前后几篇文章。

上一篇: 使用 JdbcTemplate 动态创建表并添加数据 动态连表查询
下一篇: 传入Java对象 自动创建动态表 并录入数据
评论列表:
Java小强
2021-05-11 09:39 回复

// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/test";
// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

Java小强
2021-05-11 09:38 回复

JDBC新增数据返回主键(MySQL)
http://www.javacui.com/java/550.html

发表评论:
您的网名:
个人主页:
编辑内容: