用途
该技能面向在 Micronaut 框架中使用编程式 JDBC 的场景,帮助开发者以安全 SQL 和清晰事务的方式编写数据访问代码。它基于参考规则与正反代码示例给出建议,适用于审查、改进或重构 Micronaut 项目中的 JDBC / SQL 数据访问逻辑。
主要能力
技能覆盖以下内容:
- 注入 javax.sql.DataSource(基于 micronaut-jdbc-hikari 的 Hikari 连接池),并对 Connection / PreparedStatement 使用 try-with-resources。
- 使用带绑定参数的 PreparedStatement,避免字符串拼接。
- 将 ResultSet 行映射为 Java record(使用专门的 mapRow 方法)。
- 使用 Optional 进行安全的单行查询,不假设 rs.next() 一定成功。
- 将 SQLException 转换为领域异常(catch-translate-rethrow)。
- 通过 setFetchSize 流式处理大结果集,避免 OOM。
- 使用 addBatch / executeBatch 进行批量更新与批量插入。
- 使用 @Transactional 定义服务边界,以及 TransactionDefinition.Propagation(例如用 REQUIRES_NEW 实现独立提交)。
- 说明自调用陷阱:应通过注入的 bean 调用事务协作者,而非 this.method()。
- 使用 SQL 文本块编写多行 SQL(如 upsert、方言特定子句)。
- 说明何时优先选择 Micronaut Data(@512)而非原生 JDBC。
使用方式
技能定义了明确的工作流:
- 阅读参考并评估项目上下文:阅读 references/511-frameworks-micronaut-jdbc.md,并在提出改动前检查当前项目设置。
- 收集范围并确定目标改进:识别请求的结果、约束以及最小安全改动集。
- 应用与框架一致的改动:按照参考模式与项目约定实现或重构配置/代码。
- 运行验证并报告结果:执行相应的构建/测试,并总结改动内容、验证结果及后续操作。
技能包含强制约束:
- 在应用任何改动前,必须运行 ./mvnw compile 或 mvn compile。
- 前提条件:项目在应用 JDBC 改进前必须能够编译。
- 安全要求:如果编译失败,立即停止。
- 阻塞条件:编译错误必须由用户解决后才能继续。
- 验证:应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
- 应用前:阅读参考以获取详细规则与示例。
适用场景
- 审查 Micronaut 项目中的 JDBC 或 SQL 数据访问。
- 改进 Micronaut JDBC 的事务与参数绑定。
- 将 SQLException 转换为领域异常,或流式处理大结果集。
- 修复绕过 @Transactional 的自调用问题。
- 审查 Micronaut JDBC 中 Hikari 或连接池数据源的使用。
限制
技能要求项目在改动前可编译,编译失败时必须停止并由用户解决。详细规则、示例与约束需查阅 references/511-frameworks-micronaut-jdbc.md。关于该技能的具体版本、许可、依赖版本或平台支持等信息,资料中暂未提供。