SpringBoot基础系列学习(五):JdbcTemplate 访问数据库
文章目录
- 一丶介绍
- 二丶引入依赖
- 三丶配置配置文件
- 四丶创建表
- 五丶java代码
一丶介绍
Spring Boot作为Spring的集大成者,自然会将JdbcTemplate集成进去。Spring Boot针对JDBC的使用提供了对应的Starter包:spring-boot-starter-jdbc,它其实就是在Spring JDBC上做了进一步的封装,方便在 Spring Boot 项目中更好地使用JDBC。
-
JdbcTemplate的特点
速度快,相对于ORM框架,JDBC的方式是最快的。
配置简单,Spring封装的,除了数据库连接之外,几乎没有额外的配置。
使用方便,就像DBUtils工具类,只需注入JdbcTemplate对象即可。 -
JdbcTemplate的几种类型的方法
JdbcTemplate虽然简单,功能却非常强大。它提供了非常丰富、实用的方法,归纳起来主要有以下几种类型的方法:- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句。
- update、batchUpdate方法:用于执行新增、修改与删除等语句。
- query和queryForXXX方法:用于执行查询相关的语句。
- call方法:用于执行数据库存储过程和函数相关的语句。
总的来说,新增、删除与修改三种类型的操作主要使用update和batchUpdate方法来完成。query和queryForObject方法中主要用来完成查询功能。execute方法可以用来执行任意的SQL、call方法来调用存储过程。
二丶引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MYSQL包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 默认就内嵌了Tomcat 容器,如需要更换容器也极其简单-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
三丶配置配置文件
spring:
datasource:
driver-class-name:
com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springbootStudy?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
username: root
password: root
小知识:mysql5和8的驱动不一样,可自行搜索
四丶创建表
CREATE TABLE user
(
id
bigint NOT NULL AUTO_INCREMENT,
name
varchar(255) DEFAULT NULL,
age
int DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
五丶java代码
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author Administrator
*/
@RestController
@Slf4j
public class JdbcTemplateController {
@Resource
JdbcTemplate jdbcTemplate;
@GetMapping("/count")
public void count(){
Long l = jdbcTemplate.queryForObject("select count(id) from user", Long.class);
log.info("user表中有"+l+"条数据");
}
@GetMapping("/save")
public void save(){
int i = jdbcTemplate.update("insert into user(name,age)value (?,?)", "白菜治2",22);
log.info("user表新增了"+i+"条数据");
}
}