`JdbcTemplate` 是 Spring JDBC 模块的核心类,提供了大量简化数据库操作的方法。以下是一些常用的 `JdbcTemplate` 方法,按功能分类列举:
### **1. 查询相关方法**
#### **1.1 查询单行数据**
- **`queryForObject(String sql, Class<T> requiredType)`**
执行 SQL 查询,返回单个值(例如查询单个字段的值)。
示例:`int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM users", Integer.class);`
- **`queryForObject(String sql, RowMapper<T> rowMapper)`**
执行 SQL 查询,返回单行数据,并通过 `RowMapper` 将结果集映射为对象。
示例:
```java
User user = jdbcTemplate.queryForObject(
"SELECT id, name, age FROM users WHERE id = ?",
new BeanPropertyRowMapper<>(User.class),
userId
);
```
#### **1.2 查询多行数据**
- **`query(String sql, RowMapper<T> rowMapper)`**
执行 SQL 查询,返回多行数据,并通过 `RowMapper` 将每行结果映射为对象。
示例:
```java
List<User> users = jdbcTemplate.query(
"SELECT id, name, age FROM users",
new BeanPropertyRowMapper<>(User.class)
);
```
#### **1.3 查询单列数据**
- **`queryForList(String sql, Class<T> elementType)`**
执行 SQL 查询,返回单列数据的列表。
示例:
```java
List<String> names = jdbcTemplate.queryForList("SELECT name FROM users", String.class);
```
### **2. 插入、更新、删除相关方法**
#### **2.1 插入数据**
- **`update(String sql)`**
执行 SQL 插入语句,返回受影响的行数。
示例:
```java
int rowsAffected = jdbcTemplate.update("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 30);
```
#### **2.2 更新数据**
- **`update(String sql)`**
执行 SQL 更新语句,返回受影响的行数。
示例:
```java
int rowsAffected = jdbcTemplate.update("UPDATE users SET age = ? WHERE id = ?", 31, userId);
```
#### **2.3 删除数据**
- **`update(String sql)`**
执行 SQL 删除语句,返回受影响的行数。
示例:
```java
int rowsAffected = jdbcTemplate.update("DELETE FROM users WHERE id = ?", userId);
```
### **3. 批量操作**
#### **3.1 批量插入**
- **`batchUpdate(String sql, BatchPreparedStatementSetter pss)`**
执行批量插入操作。
示例:
```java
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, names.get(i));
ps.setInt(2, ages.get(i));
}
@Override
public int getBatchSize() {
return names.size();
}
});
```
#### **3.2 批量更新**
- **`batchUpdate(String sql, List<Object[]> batchArgs)`**
执行批量更新操作。
示例:
```java
String sql = "UPDATE users SET age = ? WHERE id = ?";
List<Object[]> batchArgs = new ArrayList<>();
batchArgs.add(new Object[]{31, userId1});
batchArgs.add(new Object[]{32, userId2});
jdbcTemplate.batchUpdate(sql, batchArgs);
```
### **4. 其他常用方法**
#### **4.1 查询单个值**
- **`queryForObject(String sql, Object[] args, Class<T> requiredType)`**
带参数的查询单个值。
示例:
```java
int count = jdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM users WHERE age > ?",
new Object[]{25},
Integer.class
);
```
#### **4.2 执行存储过程**
- **`call(String sql, SqlParameterSource inParams, SqlOutParameter... outParams)`**
调用存储过程。
示例:
```java
MapSqlParameterSource inParams = new MapSqlParameterSource();
inParams.addValue("in_param", value);
SqlOutParameter outParam = new SqlOutParameter("out_param", Types.INTEGER);
jdbcTemplate.call("{CALL my_procedure(?, ?)}", inParams, outParam);
```
#### **4.3 执行原生 SQL**
- **`execute(String sql)`**
执行任意 SQL 语句(如创建表、删除表等)。
示例:
```java
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY, name VARCHAR(50), age INT)");
```
### **5. 事务相关方法**
虽然事务管理通常通过 Spring 的声明式事务管理来实现,但 `JdbcTemplate` 也支持编程式事务。可以结合 `TransactionTemplate` 或 `DataSourceTransactionManager` 来管理事务。
这些方法涵盖了大部分常见的数据库操作场景,通过 `JdbcTemplate` 的使用,可以极大地简化 JDBC 编程的复杂性。
- 环境配置
- window怎么配置java环境变量?
- Java基础语法
- Java中的数据类型
- Java中的JSONObject
- Java高级特性
- Maven
- jib-maven-plugin
- 什么是Spring Boot 的 parent pom?
- maven中各个生命周期的含义
- Spring Boot
- maven与spring boot 的关系
- Java中的连接池
- Spring JDBC
- Spring JDBC的概念
- JdbcTemplate常用的方法
- Spring中Bean的概念
- Spring中的抽象,通俗解释一下
- Spring中的事物
- Spring中的事物,通俗解释一下
- Spring中的事物抽象,常见的有哪些,列举一下
- Spring中常用的事物场景有哪些,列举一下
- Spring事务管理有哪些注解?
- Spring中使用事物处理订单的案例,列举说明一下
- Spring中声明式事务、分布式事务以及编程式事务的区别,列举一下
- 配置文件
- application-properties配置文件
- Spring Boot 的启动
- spring boot项目如何启动?
- 列举一下Spring Boot的启动过程
- SpringApplication.run方法
- Spring Boot 启动时有哪些接口?
- CommandLineRunner
- Spring Boot 的常用注解
- 系统注解
- 表格:系统注解
- @Override
- @Deprecated
- @SuppressWarnnings
- 使用在类名上的注解
- 表格:使用在类名上的注解
- @RestController
- @Controller
- @Service
- @Repository
- @Component
- @Configuration
- @Resource
- @Autowired
- @RequestMapping
- @PostMapping
- @GetMapping
- @Transactional
- @Qualifier
- 使用在方法上的注解
- 表格:使用在方法上的注解
- @RequestBody
- @PathVariable
- @Bean
- @ResponseBody
- @PreAuthorize
- 其他常用注解
- 表格:其他常用注解
- @EnableAutoConfiguration
- @SpringBootApplication
- @EnableScheduling
- @EnableAsync
- @ComponentScan
- @Aspec
- @ControllerAdvice
- @ExceptionHandler
- @Value
- @ConfigurationProperties
- @EnableConfigurationProperties
- @MapperScan
- Validator验证的常用注解
- spring IoC容器
- Spring IoC容器依赖注入实现方式
- MyBatis
- paginationInterceptor
- @TableName
- @TableId
- @Param
- UrlBasedCorsConfigurationSource
- Lombok
- @Data
- @Slf4j
- @EqualsAndHashCode
- @Accessors
- 支付系统
- 1. 初始化mysql数据库流程
- 2. 初始化redis数据库的流程
- 3. 初始化rabbitmq服务