jdbctemplate是spring对jdbc的轻量级封装,自动管理连接与异常,需先配置datasource再注入;推荐spring boot自动配置,或手动声明@bean;支持queryforobject、queryforlist、query及update、batchupdate等操作,并兼容声明式事务。

Spring 的 JdbcTemplate 是对 JDBC 的轻量级封装,帮你省去手动管理 Connection、Statement、ResultSet 和异常处理的模板代码,让数据库操作更简洁、安全、可读性更高。
配置 JdbcTemplate 实例
需要先配置数据源(DataSource),再将其注入 JdbcTemplate。推荐用 Spring Boot 自动配置,或手动声明 Bean:
- Spring Boot 默认已配置好
HikariCP数据源和JdbcTemplate,只需引入spring-boot-starter-jdbc - 手动配置示例(Java Config):
@Bean<br> public JdbcTemplate jdbcTemplate(DataSource dataSource) {<br> return new JdbcTemplate(dataSource);<br> }
执行查询操作
支持单行、多行、单列、自定义对象映射等多种查询方式:
- 查单个值(如 count):
jdbcTemplate.queryForObject("SELECT COUNT(*) FROM user", Integer.class) - 查多行结果为 List
- 查多行并映射为实体类:需配合
RowMapper(推荐用 Lambda 或实现类)jdbcTemplate.query("SELECT id, name, email FROM user",<br> (rs, rowNum) -> new User(rs.getLong("id"), rs.getString("name"), rs.getString("email")))
执行更新与批量操作
增删改统一用 update() 方法,参数自动预编译防 SQL 注入;批量操作用 batchUpdate() 提升性能:
- 单条更新:
jdbcTemplate.update("INSERT INTO user(name, email) VALUES(?, ?)", "张三", "zhang@example.com") - 批量插入(传入二维 Object 数组):
Object[][] batchArgs = {{"李四", "li@example.com"}, {"王五", "wang@example.com"}};<br> jdbcTemplate.batchUpdate("INSERT INTO user(name, email) VALUES(?, ?)", batchArgs);
处理事务与异常
JdbcTemplate 本身不管理事务,但天然兼容 Spring 声明式事务。所有 JDBC 异常会被统一转为 Spring 的 DataAccessException 体系(如 DuplicateKeyException、DataIntegrityViolationException),便于统一捕获和处理:
- 在 service 方法上加
@Transactional即可控制事务边界 - 避免直接 catch
SQLException,应捕获其子类如EmptyResultDataAccessException(查不到数据时抛出)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











