关于 311-frameworks-spring-jdbc
用于在 Java 项目中应用 Spring JDBC 实践的 Skill,默认采用 Spring Framework 7+ 的 JdbcClient。内容涵盖安全 SQL、事务处理、结果集处理和验证要求。
主要功能
- 01优先采用 JdbcClient 的查询与更新
- 02参数化 SQL
- 03事务与异常处理
- 04批量更新和生成键
- 05使用 @JdbcTest 测试 JDBC
适用场景
- 01审查 Spring JDBC 代码
- 02查找 SQL 注入风险
- 03重构数据访问与事务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jabrena/ plinth --skill 311-frameworks-spring-jdbc安装后在 Claude Code 中输入/311-frameworks-spring-jdbc确认已加载。
附带文件references/311-frameworks-spring-jdbc.md
详细介绍
Spring JDBC — JdbcClient(Spring Framework 7+)
遵循 Spring JDBC 指南,并默认使用 JdbcClient;仅在处理遗留代码或 JdbcClient 未涵盖的 API(批量更新、KeyHolder、RowCallbackHandler 流式处理)时使用 JdbcTemplate / NamedParameterJdbcTemplate。
此技能涵盖哪些内容?
- 参数化 SQL(绝不拼接用户输入)
- JdbcClient 流式 API(Spring Framework 7+)——查询和更新的首选方案
- 通过 JdbcClient 使用命名参数;用于遗留代码迁移的 NamedParameterJdbcTemplate
- RowMapper、query(Class) 和 record
- 批量操作和生成的键(必要时使用 JdbcTemplate / JdbcOperations)
- 安全处理生成的键(KeyHolder;JdbcClient 单行更新)
- 服务层 @Transactional 边界
- 只读事务(@Transactional(readOnly = true))
- 安全获取单行数据(optional() / findFirst() 与 queryForObject)
- 流式处理大型结果集(RowCallbackHandler、ResultSetExtractor)
- DataAccessException 处理(DuplicateKeyException、EmptyResultDataAccessException)
- 使用 @Sql 固件进行 @JdbcTest 切片测试
范围: 根据参考规则和良好 / 不良代码示例应用建议。
限制
应用任何 Spring JDBC 更改之前,确保项目可以编译。如果编译失败,请立即停止。应用改进后,运行完整验证。
- 强制要求:应用任何更改之前,运行
./mvnw compile或mvn compile - 安全要求:如果编译失败,请立即停止
- 验证要求:应用改进后,运行
./mvnw clean verify或mvn clean verify - SQL 注入:绝不将不可信输入拼接到 SQL 字符串中——始终使用绑定参数
- 应用更改之前:阅读参考文档,了解详细规则和良好 / 不良模式
何时使用此技能
- 审查使用 Spring JDBC(JdbcTemplate、JdbcClient、NamedParameterJdbcTemplate)的 Java 代码
- 在 Java 代码中应用 Spring JDBC 数据访问最佳实践
- 检测并修复 JDBC 代码中的 SQL 注入风险
- 改进 JDBC 操作的事务边界或异常处理
- 审查 Spring Framework 7 中的 JdbcClient 用法
工作流
- 阅读参考文档并评估项目上下文
阅读 references/311-frameworks-spring-jdbc.md,并检查当前项目设置,然后再提出更改建议。
- 确定范围并选择目标改进
识别所需结果、限制,以及要应用的最小安全更改集。
- 应用符合框架规范的更改
按照参考模式和项目约定实现或重构配置 / 代码。
- 运行验证并报告结果
执行适当的构建 / 测试,并总结更改内容、验证情况以及任何后续操作。
参考
详细指南、示例和限制请参阅 references/311-frameworks-spring-jdbc.md。
评论
支持 Markdown