首页 > 编程笔记 > Java笔记 阅读:14

JdbcTemplate是什么,JdbcTemplate简介(新手必看)

JDBC(Java Data Base Connectivity,Java 数据库连接)是 Java 语言中用来规范应用程序如何访问数据库的 API,为多种关系数据库提供统一访问方式,诸如查询和更新数据库中数据的方法。

JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

JDBC 作为 Java 访问数据库的 API 规范,统一了各种数据库的访问方式,但是直接在 Java 程序中使用 JDBC 还是非常复杂和烦琐的,所以 Spring 对 JDBC 进行了更深层次的封装,而 JdbcTemplate 就是 Spring 提供的操作数据库的便捷工具。

JdbcTemplate 主要实现数据库连接的管理,我们可以借助它来执行所有数据库操作,例如查询、插入、更新、删除等操作,并且有效地避免了直接使用 JDBC 带来的烦琐编码。

Spring Boot 作为 Spring 的集大成者,自然会将 JdbcTemplate 集成进去。Spring Boot 针对 JDBC 的使用提供了对应的 Starter:spring-boot-starter-jdbc,它其实就是在 Spring JDBC 上做进一步的封装,方便在 Spring Boot 项目中更好地使用 JDBC。

JdbcTemplate的特点有以下几点:

JdbcTemplate几种类型的方法

JdbcTemplate 虽然简单,但是功能非常强大,它提供了非常丰富、实用的方法,归纳起来主要有以下几种类型的方法:
总的来说,新增、删除与修改 3 种类型的操作主要使用 update() 和 batchUpdate() 方法来完成。query() 和 queryForObject() 方法主要用来完成查询功能。execute() 方法可以用来创建、修改、删除数据库表。call() 方法则用来调用存储过程。

在大部分情况下,我们都会使用更加强大的持久化框架来访问数据库,比如 MyBatis、Hibernate 或者 Spring Data JPA。之所以介绍 JdbcTemplate 这种基础的数据库框架,只是希望读者能从基础开始学习,只有掌握了这些基础的框架才能更好地学习其他复杂的 ORM 框架。

Spring Boot集成JdbcTemplate

Spring Boot 集成 JDBC 很简单,只需要引入依赖并进行基础配置即可。接下来以一个具体的例子来学习如何利用 Spring 的 JdbcTemplate 进行数据库操作。

1) 添加依赖配置

在 pom.xml 配置文件中增加 JDBC 等相关依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
在上面的示例中,在 pom.xml 文件中引入 spring-boot-starterjdbc 依赖。同时,由于项目中使用 MySQL 作为数据库,因此项目中需要引入 MySQL 驱动包。

spring-boot-starter-jdbc 直接依赖于 HikariCP 和 spring-jdbc:

2) 创建数据库及表结构

首先创建 jdbctest 测试数据库,然后创建 student 表,包括 id、name、sex、age 等字段,对应的 SQL 脚本如下:
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
                `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
                `name` varchar(32) DEFAULT NULL COMMENT '姓名',
                `sex` int DEFAULT NULL,
                `age` int DEFAULT NULL,
                PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;;

3) 配置数据源

在 application.properties 中配置 MySQL 数据库连接相关内容。具体配置如下:
spring.datasource.url=jdbc:mysql://localhost:3306/jdbctest?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
在上面的示例中,数据库连接配置非常简单,包括数据库连接地址、用户名、密码以及数据驱动,无须其他额外配置。在 Spring Boot 2.0 中,com.mysql.jdbc.Driver 已经过期,推荐使用 com.mysql.cj.jdbc.Driver。

4) 使用JdbcTemplate

上面已经把 JdbcTemplate 集成到 Spring Boot 项目中,并创建了数据。接下来创建一个单元测试类 JdbcTests,验证 JdbcTemplate 操作数据库。

示例代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest
class JdbcTests {
    @Autowired
    JdbcTemplate jdbcTemplate;

    @Test
    void querytest() throws SQLException {
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from student ");
        System.out.println(list.size());
        Assert.assertNotNull(list);
        Assert.assertEquals(1,list.size());
    }
}
上面是简单地使用 JdbcTemplate 的测试示例,Spring 的 JdbcTemplate 是自动配置的。使用 @Autowired 将 JdbcTemplate 注入需要的 Bean 中即可直接调用。

单击 Run Test 或在方法上右击,选择 Run 'querytest',运行测试方法,结果如下图所示:


图 1 单元测试的运行结果

单元测试 queryTest 运行成功,并输出了相应的结果。这说明 JdbcTemplate 已经连接上数据库,并成功执行了数据查询操作。

以上就把 JdbcTemplate 集成到 Spring Boot 项目中了。

相关文章