311-frameworks-spring-jdbc — скилл для Claude Code: Spring JDBC
Скилл для ревью и написания JDBC-кода на Spring: подсказывает JdbcClient, ловит SQL-инъекции и правит границы транзакций.
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-codeЧто делает 311-frameworks-spring-jdbc
Скилл разбирает програмный доступ к базе через Spring JDBC. По умолчанию он опирается на JdbcClient из Spring Framework 7+, а JdbcTemplate и NamedParameterJdbcTemplate оставляет для легаси-кода и случаев, где нужны batch-обновления, KeyHolder или потоковая выдача через RowCallbackHandler.
Внутри — набор правил и примеров хорошего и плохого кода: параметризованный SQL, маппинг через RowMapper в records, работа с batch и сгенерированными ключами, @Transactional на сервисном слое, read-only транзакции, безопасное чтение одной строки через optional() и findFirst(), обработка DataAccessException, тесты-срезы @JdbcTest с фикстурами @Sql. Скилл сначала читает references/311-frameworks-spring-jdbc.md, потом смотрит на проект и предлагает минимальный набор правок.
Есть жёсткое условие: перед любыми изменениями проект должен собираться. Если ./mvnw compile или mvn compile падает, скилл останавливается и ничего не трогает. После правок он гоняет ./mvnw clean verify. Это повод сначала починить сборку, а уже потом просить рефакторинг.
Какие задачи решает
- найти конкатенацию пользовательского ввода в SQL-строке
- перевести легаси-код с NamedParameterJdbcTemplate на JdbcClient
- разложить результат запроса в record через RowMapper
- вынести границы транзакции в сервисный слой
- заменить queryForObject на optional() там, где строка может отсутствовать
Примеры запросов агенту
- Проверь этот репозиторий на SQL-инъекции в JDBC-коде
- Перепиши эти запросы на JdbcClient из Spring Framework 7
- Посмотри транзакции и обработку DataAccessException в сервисах
Как установить 311-frameworks-spring-jdbc
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-code2Вручную: положить файлы
~/.claude/skills/311-frameworks-spring-jdbc/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/311-frameworks-spring-jdbc/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a codex2Вручную: положить файлы
.agents/skills/311-frameworks-spring-jdbc/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a cursor2Вручную: положить файлы
.cursor/skills/311-frameworks-spring-jdbc/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install jabrena/plinth 311-frameworks-spring-jdbc2Вручную: положить файлы
.github/skills/311-frameworks-spring-jdbc/SKILL.md1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a gemini-cli2Командой платформы
gemini skills install https://github.com/jabrena/plinth --path skills/311-frameworks-spring-jdbcВручную: положить файлы
.devin/skills/311-frameworks-spring-jdbc/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора40
Похожие
Рядом в теме «Бэкенд и API»
Всё по теме «Бэкенд и API» →Вопросы о 311-frameworks-spring-jdbc
Как установить 311-frameworks-spring-jdbc в Claude?
Выполните npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-code. Скилл окажется в ~/.claude/skills/311-frameworks-spring-jdbc/SKILL.md.
Что делает 311-frameworks-spring-jdbc?
Проверяет и переписывает JDBC-код на Spring: параметризованный SQL, JdbcClient, RowMapper, batch, транзакции, обработку исключений и тесты-срезы.
Нужно ли что-то настроить до запуска скилла?
Проект должен компилироваться. Скилл сам запускает ./mvnw compile или mvn compile и при ошибке сборки останавливается, не внося изменений.
Исходный текст
SKILL.md · Apache-2.0
--- name: 311-frameworks-spring-jdbc description: Use when you need to write or review programmatic JDBC with Spring — including JdbcClient (Spring Framework 7+) as the default API, JdbcTemplate only where batch/streaming APIs require JdbcOperations, NamedParameterJdbcTemplate for legacy named-param code, parameterized SQL, RowMapper mapping to records, batch operations, transactions, safe handling of generated keys, DataAccessException handling, read-only transactions, streaming large result sets, and @JdbcTest slice testing. This should trigger for requests such as Review Java code for Spring JDBC (JdbcTemplate, JdbcClient, NamedParameterJdbcTemplate); Apply best practices for Spring JDBC data access in Java code; Detect and fix SQL injection risks in JDBC code; Improve transaction boundaries or exception handling for JDBC operations; Review JdbcClient usage in Spring Framework 7. Part of Plinth Toolkit license: Apache-2.0 metadata: author: Juan Antonio Breña Moral version: 0.19.0 --- # Spring JDBC — JdbcClient (Spring Framework 7+) Apply Spring JDBC guidelines with JdbcClient as the default; use JdbcTemplate / NamedParameterJdbcTemplate only for legacy code or APIs not covered by JdbcClient (batch updates, KeyHolder, RowCallbackHandler streaming). **What is covered in this Skill?** - Parameterized SQL (never concatenate user input) - JdbcClient fluent API (Spring Framework 7+) — preferred for queries and updates - Named parameters via JdbcClient; NamedParameterJdbcTemplate for legacy migration - RowMapper, query(Class), and records - Batch operations and generated keys (JdbcTemplate / JdbcOperations where needed) - Safe handling of generated keys (KeyHolder; single-row JdbcClient updates) - Service-layer @Transactional boundaries - Read-only transactions (@Transactional(readOnly = true)) - Safe single-row access (optional() / findFirst() vs queryForObject) - Streaming large result sets (RowCallbackHandler, ResultSetExtractor) - DataAccessException handling (DuplicateKeyException, EmptyResultDataAccessException) - @JdbcTest slice testing with @Sql fixtures **Scope:** Apply recommendations based on the reference rules and good/bad code examples. ## Constraints Before applying any Spring JDBC changes, ensure the project compiles. If compilation fails, stop immediately. After applying improvements, run full verification. - **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change - **SAFETY**: If compilation fails, stop immediately - **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements - **SQL INJECTION**: Never concatenate untrusted input into SQL strings — always use bind parameters - **BEFORE APPLYING**: Read the reference for detailed rules and good/bad patterns ## When to use this skill - Review Java code for Spring JDBC (JdbcTemplate, JdbcClient, NamedParameterJdbcTemplate) - Apply best practices for Spring JDBC data access in Java code - Detect and fix SQL injection risks in JDBC code - Improve transaction boundaries or exception handling for JDBC operations - Review JdbcClient usage in Spring Framework 7 ## Workflow 1. **Read reference and assess project context** Read `references/311-frameworks-spring-jdbc.md` and inspect the current project setup before proposing changes. 2. **Gather scope and decide target improvements** Identify requested outcomes, constraints, and the minimum safe set of changes to apply. 3. **Apply framework-aligned changes** Implement or refactor configuration/code following the reference patterns and project conventions. 4. **Run verification and report results** Execute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions. ## Reference For detailed guidance, examples, and constraints, see [references/311-frameworks-spring-jdbc.md](references/311-frameworks-spring-jdbc.md).
© Juan Antonio Breña Moral · Apache-2.0 · jabrena/plinth