为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:DM8 【操作系统】:linux 【CPU】: 【问题描述】*:数据库驱动 DmJdbcDriver18 版本8.1.3.140 的DmdbStatement的getGeneratedKeys方法已弃用怎么获取数据库的自增主键?在mybatis中设置keyProperty="id" useGeneratedKeys="true"无法返回自增序列+触发器生成的主键,一直返回0.
Statement 中的 getGeneratedKeys 是可以的:
public String getKey(String sql) throws SQLException { StringBuilder result = new StringBuilder(); // 使用 try-with-resources 确保资源正确关闭 try (Statement statement = conn.createStatement()) { // 执行 SQL 语句并请求返回自动生成的键 int affectedRows = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); if (affectedRows > 0) { result.append("Affected rows: ").append(affectedRows).append("\n"); try (ResultSet generatedKeys = statement.getGeneratedKeys()) { if (generatedKeys.next()) { // 获取自动生成的键并添加到结果中 long generatedId = generatedKeys.getLong(1); result.append("Generated key: ").append(generatedId).append("\n"); } else { result.append("No keys were generated.\n"); } } } else { result.append("No rows were affected.\n"); } } return result.toString(); // 返回包含信息的字符串 }
Statement 中的 getGeneratedKeys 是可以的:
public String getKey(String sql) throws SQLException { StringBuilder result = new StringBuilder(); // 使用 try-with-resources 确保资源正确关闭 try (Statement statement = conn.createStatement()) { // 执行 SQL 语句并请求返回自动生成的键 int affectedRows = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); if (affectedRows > 0) { result.append("Affected rows: ").append(affectedRows).append("\n"); try (ResultSet generatedKeys = statement.getGeneratedKeys()) { if (generatedKeys.next()) { // 获取自动生成的键并添加到结果中 long generatedId = generatedKeys.getLong(1); result.append("Generated key: ").append(generatedId).append("\n"); } else { result.append("No keys were generated.\n"); } } } else { result.append("No rows were affected.\n"); } } return result.toString(); // 返回包含信息的字符串 }