Java Spring5学习之JdbcTemplate详解
什么是JdbcTemplate
JdbcTemplate 是 Spring Framework 中的一个核心模块,它提供了在 Java 应用程序中使用 JDBC 进行关系数据库访问的许多经典用例的实现。它通过显式管理 JDBC 资源和异常处理来简化了与数据库的交互。
在Java应用程序中使用JdbcTemplate
添加依赖
如果正在使用 Maven,请在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.13</version>
</dependency>
使用示例
接下来,我们将以一个具体的示例来演示如何使用 JdbcTemplate 。
假设有一个学生表 student,包含 id 和 name 两个字段,我们要在 Java 应用程序中使用 JdbcTemplate 来完成对它的增、删、改、查。
- 添加新的学生
import org.springframework.jdbc.core.JdbcTemplate;
public class StudentDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void addStudent(String name) {
String sql = "INSERT INTO student (name) VALUES (?)";
jdbcTemplate.update(sql, name);
}
}
- 删除学生
import org.springframework.jdbc.core.JdbcTemplate;
public class StudentDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void deleteStudentById(int id) {
String sql = "DELETE FROM student WHERE id = ?";
jdbcTemplate.update(sql, id);
}
}
- 修改学生姓名
import org.springframework.jdbc.core.JdbcTemplate;
public class StudentDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void updateStudentNameById(int id, String name) {
String sql = "UPDATE student SET name = ? WHERE id = ?";
jdbcTemplate.update(sql, name, id);
}
}
- 查询所有学生
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class StudentDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<Student> getAllStudents() {
String sql = "SELECT * FROM student";
RowMapper<Student> rowMapper = new RowMapper<Student>() {
@Override
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student student = new Student();
student.setId(resultSet.getInt("id"));
student.setName(resultSet.getString("name"));
return student;
}
};
return jdbcTemplate.query(sql, rowMapper);
}
}
示例1:在 Spring Boot 中使用 JdbcTemplate
添加依赖
在 Spring Boot 工程中,我们只需要添加以下依赖就可以使用 JdbcTemplate:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
配置数据源和 JdbcTemplate
在 application.properties 中配置数据源和 JdbcTemplate:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.jdbc.template.query-timeout=5s
spring.jdbc.template.fetch-size=100
spring.jdbc.template.max-rows=1000
使用示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
public class StudentDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
public void addStudent(String name) {
String sql = "INSERT INTO student (name) VALUES (?)";
jdbcTemplate.update(sql, name);
}
}
示例2:使用 NamedParameterJdbcTemplate
NamedParameterJdbcTemplate 是 JdbcTemplate 的一个变种,它可以使用命名参数而不是 ? 占位符,这使得 SQL 语句具有更好的可读性。
添加依赖
先添加 Spring Boot 的 Jdbc 和 MySQL 驱动器依赖,然后添加 NamedParameterJdbcTemplate 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.13</version>
</dependency>
配置数据源和 NamedParameterJdbcTemplate
在 application.properties 中配置数据源和 NamedParameterJdbcTemplate:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
使用示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
public class StudentDAO {
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public void batchAddStudents(List<Student> students) {
String sql = "INSERT INTO student (name) VALUES (:name)";
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(students.toArray());
namedParameterJdbcTemplate.batchUpdate(sql, batch);
}
}
以上就是 Java Spring5 学习之 JdbcTemplate 的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Spring5学习之JdbcTemplate详解 - Python技术站