Skip to main content
skill CX Codex

311-frameworks-spring-jdbc — Claude Code skill for Spring JDBC

A skill that reviews and writes Spring JDBC code: pushes JdbcClient, catches SQL injection, fixes transaction boundaries.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-code
Open on GitHub

What 311-frameworks-spring-jdbc does

This skill covers programmatic database access through Spring JDBC. Its default is JdbcClient from Spring Framework 7+, while JdbcTemplate and NamedParameterJdbcTemplate stay for legacy code and for cases that need batch updates, KeyHolder or RowCallbackHandler streaming.

Inside is a rule set with good and bad code examples: parameterized SQL, RowMapper mapping into records, batch operations and generated keys, @Transactional boundaries on the service layer, read-only transactions, safe single-row reads with optional() and findFirst(), DataAccessException handling, and @JdbcTest slice tests with @Sql fixtures. The skill reads references/311-frameworks-spring-jdbc.md first, then inspects the project and proposes the smallest safe set of changes.

One hard rule: the project has to compile before anything is touched. If ./mvnw compile or mvn compile fails, the skill stops and changes nothing. After the edits it runs ./mvnw clean verify. So fix the build first, then ask for the refactor.

What it helps with

  • spot user input concatenated into a SQL string
  • migrate legacy NamedParameterJdbcTemplate code to JdbcClient
  • map a query result into a record with RowMapper
  • move transaction boundaries up to the service layer
  • replace queryForObject where a row may be missing

Example prompts for the agent

  • Review this repository for SQL injection in the JDBC code
  • Rewrite these queries with JdbcClient from Spring Framework 7
  • Check transaction boundaries and DataAccessException handling in the services

How to install 311-frameworks-spring-jdbc

1Skills CLI (Vercel)

npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-code

2Manually: put the files in place

~/.claude/skills/311-frameworks-spring-jdbc/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/311-frameworks-spring-jdbc/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about 311-frameworks-spring-jdbc

How do I install 311-frameworks-spring-jdbc in Claude?

Run npx skills add jabrena/plinth --skill 311-frameworks-spring-jdbc -a claude-code. The skill lands in ~/.claude/skills/311-frameworks-spring-jdbc/SKILL.md.

What does 311-frameworks-spring-jdbc do?

It reviews and rewrites Spring JDBC code: parameterized SQL, JdbcClient, RowMapper, batch operations, transactions, exception handling and slice tests.

What has to be in place before running the skill?

The project must compile. The skill runs ./mvnw compile or mvn compile itself and stops without making changes if the build fails.

Source text

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

Similar skills

Everything for Backend and APIs →

From the same set40

412-frameworks-quarkus-panache A skill for Hibernate ORM Panache in Quarkus: query patterns, DTO projections and locking, with a compile check before and after every change. CX Codex +1 331installs 402-frameworks-quarkus-rest A skill for designing and reviewing Quarkus REST APIs: JAX-RS resources, validation, status codes, versioning and caching. CX Codex +1 331installs 133-java-testing-acceptance-tests Turns maintainer-approved Gherkin scenarios into Java acceptance tests: RestAssured, DB and Kafka fixtures, WireMock for external REST. CX Codex +1 329installs 312-frameworks-spring-data-jdbc A skill that applies Spring Data JDBC rules to Java records: entities, repositories, aggregate boundaries, transactions, N+1 avoidance. CX Codex +1 329installs 012-agile-epic The skill walks the agent through template questions and produces a Markdown epic: business value, scope, success criteria, risks. CX Codex +1 326installs 323-frameworks-spring-boot-testing-acceptance-tests Turns maintainer-sanitized Gherkin scenarios into Spring Boot acceptance tests with TestRestTemplate, Testcontainers and WireMock. CX Codex +1 324installs 401-frameworks-quarkus-core A skill that reviews and fixes the core of a Quarkus app: CDI beans, profiles, interceptors, virtual threads. Useful once the Java project already compiles. CX Codex +1 321installs 114-java-maven-search Reads outdated dependency and plugin reports from your pom.xml and helps verify Maven artifact coordinates from approved evidence. CX Codex +1 315installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor