7.1 JdbcTemplate 入门

第7章 JdbcTemplate 数据连接模板

7.1 JdbcTemplate 入门
7.2 使用 JdbcTemplate 操作数据库
7.3 实战:实现 JdbcTemplate 多数据源

7.1 JdbcTemplate 入门

7.1.1 JdbcTemplate 简介

1、JDBC

什么是JDBC?

JDBC(Java Database Connectivity,Java数据库连接)是 Java 语言中用来贵方应用程序如何访问数据库的API,为多种关系数据库提供统一访问方式,诸如查询和更新数据库中数据的方法。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,是数据库开发人员能够编写数据库应用程序。

2、JdbcTemplate

(1)什么是 JdbcTemplate?

JDBC 作为 Java 访问数据库的 API 规范,统一了各种数据库的访问方式,但是直接在 Java 程序中使用 JDBC 还是非常复杂和繁琐的,所以 Spring 对 JDBC 进行了更深层次的封装,而 JdbcTemplate 就是 Spring 提供的操作数据库的便捷工具。它主要实现数据库连接的管理,我们可以借助 JdbcTemplate 来执行所有数据库操作,例如查询、插入、更新、删除等操作,并且有效地避免了直接使用 JDBC 带来的繁琐编码。

Spring Boot 针对 JDBC 的使用提供了对应的 Starter: spring-boot-starter-jdbc,它其实就是在 Spring JDBC 上进一步的封装,方便在 Spring Boot 项目职工更好地使用 JDBC。

(2)JdbcTemplate 的特点?

  • 速度快:相对于 ORM 框架,JDBC 的方式是最快的。
  • 配置简单:Spring 封装的除了数据库连接之外,几乎没有额外的配置。
  • 使用方便:它更像 DBUtils 工具类,只需注入 JdbcTemplate 对象即可。

(3)JdbcTemplate 的几种类型的方法?

JdbcTemplate 虽然简单,但是功能非常强大,它提供了非常丰富、实用的方法,归纳起来主要有以下几种类型的方法:

  • 1) execute() 方法:可以用于执行任何 SQL 语句,一般用于执行 DDL 语句。【建库 或 建表】
  • 2) update()、batchUpdate() 方法:用于执行新增、修改与删除等语句。【增删改】
  • 3) query() 和 queryForXXX() 方法:用于执行查询相关的语句。【查】
  • 4) call() 方法:用于执行数据库存储过程和函数相关的语句。【存储过程 或 函数】

总的来说,
新增、修改和删除3种类型的操作主要使用 update() 和 batchUpdate() 方法来完成。
query() 和 queryForObject() 方法主要用来完成查询功能。
execute() 方法可以用来创建、修改、删除数据库表。
call() 方法则用来调用存储过程。

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

7.1.2 Spring Boot 集成 JdbcTemplate

1、创建数据库及表结构

(1)建库:创建数据库jdbctest

create database jdbctest;

创建数据库jdbctest

(2)建表:创建数据表student

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;

创建数据表student

创建数据表student_2

(3)插入数据:向新建的student表中插入一条测试数据

INSERT INTO `jdbctest`.`student` (`id`, `name`, `sex`, `age`) VALUES ('1', '张三', '1', '10');

插入数据

2、添加依赖配置

pom.xml

		<!--Spring Boot 集成 JdbcTemplate-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!--MySQL 驱动包-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

3、配置数据源

application.properties(位置:src/main/resources/application.properties)

# 配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/jdbctest?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=******

4、创建单元测试类

JdbcTests.java(位置:src/test/java/com/example/jdbctemplateproject/service/JdbcTests.java)

package com.example.jdbctemplateproject.service;

import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * 使用 JdbcTemplate
 *
 * @author: shipleyleo
 * @create: 2023-02-25 16:57:50
 */
@RunWith(SpringRunner.class)
@SpringBootTest
class JdbcTests {
    @Autowired
    JdbcTemplate jdbcTemplate;

    @Test
    public 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());
    }
}

单击 Run Test 或 在方法上右击选择 Run ‘querytest’,执行单元测试,结果如图所示。
执行单元测试的结果
单元测试 querytest 运行成功,并输出了相应的结果。这说明 JdbcTemplate 已经连接上数据库,并成功执行了数据查询操作。

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

附:如何执行单元测试?

(方式1)执行单元测试类:在类上右击选择 Run ‘JdbcTests’,如图所示。
执行单元测试类

(方式2)执行单元测试方法:在方法上右击选择 Run ‘querytest’,如图所示。
执行单元测试方法

来源:《Spring Boot 从入门到实战》学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值