package pers.mjn.return_pk; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; import pers.mjn.util.JdbcUtil; // 获取自动生成的主键 public class ReturnPKTest { // Statement方式 @Test public void testStatement() throws Exception { String sql = "INSERT INTO t_student (name, age) VALUES ('AA', 23)"; Connection conn = JdbcUtil.getConn(); Statement st = conn.createStatement(); //----------------------------------- // 设置可以获取自动生成的主键 st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); // 去获取自动生成的主键 ResultSet rs = st.getGeneratedKeys(); if(rs.next()) { Long id = rs.getLong(1); // 获取第一列 System.out.println(id); } JdbcUtil.close(conn, st, rs); } // PreparedStatement 方式 @Test public void testPreparedStatement() throws Exception { String sql = "INSERT INTO t_student (name, age) VALUES (?, ?)"; Connection conn = JdbcUtil.getConn(); // --------------------------------------------------------------- // 设置可以获取自动生成的主键 PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, "XX"); ps.setInt(2, 28); ps.executeUpdate(); // 去获取自动生成的主键 ResultSet rs = ps.getGeneratedKeys(); if(rs.next()) { Long id = rs.getLong(1); // 获取第一列 System.out.println(id); } JdbcUtil.close(conn, ps, null); } }