14、整合JDBC
14.1、SpringData简介
对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。

Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。

Sping Data 官网:https://spring.io/projects/spring-data

数据库相关的启动器 :可以参考官方文档:

https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot-starter

14.2、整合JDBC
创建测试项目测试数据源

1、新建一个项目测试:springboot-data-jdbc ; 引入相应的模块!基础模块

2、项目建好之后,发现自动帮我们导入了如下的启动器:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

3、编写yaml配置文件连接数据库;

spring:datasource:username: rootpassword: root#?serverTimezone=UTC解决时区的报错url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.jc.jdbc.Driver#新的驱动程序类不推荐使用 com.mysql.jdbc.Driver 驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。//要保证有springboot数据库

注意:

  • 新的驱动程序类不推荐使用 com.mysql.jdbc.Driver
  • 驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
  • 新的驱动程序类推荐使用 com.mysql.jc.jdbc.Driver 可以不配置,有默认配置
  • 也就是说可以不需要写driver-class-name: com.mysql.jc.jdbc.Driver

4、配置完这一些东西后,我们就可以直接去使用了,因为SpringBoot已经默认帮我们进行了自动配置;去测试类测试一下

@SpringBootTest
class SpringbootDataJdbcApplicationTests {//DI注入数据源@AutowiredDataSource dataSource;@Testpublic void contextLoads() throws SQLException {//看一下默认数据源System.out.println(dataSource.getClass());//获得连接Connection connection =   dataSource.getConnection();System.out.println(connection);//关闭连接connection.close();}
}


结果:我们可以看到他默认给我们配置的数据源为 : class com.zaxxer.hikari.HikariDataSource , 我们并没有手动配置

我们来全局搜索一下,找到数据源的所有自动配置都在 :DataSourceAutoConfiguration文件:

@Import({Hikari.class, Tomcat.class, Dbcp2.class, Generic.class, DataSourceJmxConfiguration.class}
)
protected static class PooledDataSourceConfiguration {protected PooledDataSourceConfiguration() {}
}

这里导入的类都在 DataSourceConfiguration 配置类下,可以看出 Spring Boot 2.2.5 默认使用HikariDataSource 数据源,而以前版本,如 Spring Boot 1.5 默认使用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源;

HikariDataSource 号称 Java WEB 当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀;

可以使用 spring.datasource.type 指定自定义的数据源类型,值为 要使用的连接池实现的完全限定名。

关于数据源我们并不做介绍,有了数据库连接,显然就可以 CRUD 操作数据库了。但是我们需要先了解一个对象 JdbcTemplate

JDBCTemplate



1、有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接(java.sql.Connection),有了连接,就可以使用原生的 JDBC 语句来操作数据库;

2、即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封装,即JdbcTemplate。

3、数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。

4、Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序员只需自己注入即可使用

5、JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类

JdbcTemplate主要提供以下几类方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

测试

编写一个Controller,注入 jdbcTemplate,编写测试方法进行访问测试;

@RestController
@RequestMapping("/jdbc")
public class JdbcController {/*** Spring Boot 默认提供了数据源,默认提供了 org.springframework.jdbc.core.JdbcTemplate* JdbcTemplate 中会自己注入数据源,用于简化 JDBC操作* 还能避免一些常见的错误,使用起来也不用再自己来关闭数据库连接*/@AutowiredJdbcTemplate jdbcTemplate;//查询employee表中所有数据//List 中的1个 Map 对应数据库的 1行数据//Map 中的 key 对应数据库的字段名,value 对应数据库的字段值@GetMapping("/list")public List<Map<String, Object>> userList(){String sql = "select * from employee";List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);return maps;//jdbcTemplate.queryForList该方法将返回一个List,该List中的每一条 记录是一个Map对象,对应应数据库中某一行;}//新增一个用户@GetMapping("/add")public String addUser(){//插入语句,注意时间问题String sql = "insert into employee(last_name, email,gender,department,birth)" +" values ('狂神说','24736743@qq.com',1,101,'"+ new Date().toLocaleString() +"')";jdbcTemplate.update(sql);//查询return "addOk";}//修改用户信息@GetMapping("/update/{id}")public String updateUser(@PathVariable("id") int id){//插入语句String sql = "update employee set last_name=?,email=? where id="+id;//数据Object[] objects = new Object[2];objects[0] = "秦疆";objects[1] = "24736743@sina.com";jdbcTemplate.update(sql,objects);//查询return "updateOk";}//删除用户@GetMapping("/delete/{id}")public String delUser(@PathVariable("id") int id){//插入语句String sql = "delete from employee where id=?";jdbcTemplate.update(sql,id);//查询return "deleteOk";}}

测试请求,结果正常;

到此,CURD的基本操作,使用 JDBC 就搞定了。

补充:
JdbcTemplate基本使用https://blog.csdn.net/weixin_40001125/article/details/88538576

springboot14 整合JDBC相关推荐

  1. SpringBoot整合JDBC、整合Druid数据源详解教程

    目录 一.整合JDBC 1. 环境准备 1. 创建数据库 2. 创建SpringBoot项目 3. IDEA连接数据库 2. 编写数据库配置信息 3. 编写测试类测试 4. CRUD操作数据库 1. ...

  2. springboot 引入jdbc驱动_SpringBoot整合jdbc、durid、mybatis详解,数据库的连接就是这么简单...

    SpringBoot底层统一采用SpringData处理数据库,这一章主要来讲一下SpringBoot整合jdbc.durid.mybatis的方式. (一)整合jdbc 整合jdbc主要有三步: 1 ...

  3. 六十九、Springboot整合JDBC,连接Mysql

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 整合JDBC ...

  4. spring整合jdbc

    spring整合jdbc 在pom.xml文件中导入依赖: <!-- 阿里数据源 --> <dependency><groupId>com.alibaba</ ...

  5. Spring4.x()--Spring整合Jdbc的HelloWorld

    Spring整合Jdbc的HelloWorld 一.JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模 ...

  6. SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源

    SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源 上篇文章我们讲到了如何配置整合JDBC的基础环境,这篇文章我们讲解一下如何去配置服务的DataSource数据库数据源,方便其对 ...

  7. Springboot整合JDBC和DBUtils,实现简单的增删改查.

    Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...

  8. spring整合jdbc配置文件

    spring通过jdbcTemplate整合jdbc,在spring框架中管理数据源配置,并进行事务管理 <?xml version="1.0" encoding=" ...

  9. SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本

    今天在使用SpringBoot2.x版本整合JDBC时遇到了一些问题:由于我之前一直用SpringBoot1.5的版本,所以直接在yml里按照1.5的版本配置了属性,没想到2.x直接不能用了.首先是数 ...

最新文章

  1. 第一章 Shiro简介——跟我学习springmvc shiro mybatis
  2. 双扬:一个非典型前端的成长之路
  3. 范围for语句的整理
  4. ruby 在 windows 中 新建进程 打开其他程序
  5. 凑数算法 java_[蓝桥杯][2017年第八届真题]包子凑数 (Java代码)
  6. 精选CSDN的ACM-ICPC专栏
  7. 滑铁卢大学计算机科学双录取,滑铁卢大学双录取要求
  8. 搭建ELK-流水账-只记思路
  9. 基于Vue的16个UI框架集锦
  10. 常用通信光纤是如何分类的
  11. 开放正成为华为下一阶段的战略竞争力
  12. 11.NDP协议分析与实践
  13. 手机六大操作系统优缺点比较
  14. 选择防身武器,利用身边的物品才是王道
  15. 【周志华机器学习】十四、概率图模型
  16. win10设置虚拟内存_硬件基础:虚拟内存相关知识介绍?
  17. 根据交换机端口分配固定地址的方法
  18. 十大管理输入输出工具和技术
  19. 计算机科学导论第二版(佛罗赞)-读书笔记
  20. 树莓派编译 android,RPI3: 在树莓派3上运行ANDROID 8.1系统

热门文章

  1. 10以内逆向运算题_加减法启蒙系列 | 实战篇二(10以内减法)
  2. 机器学习和深度学习引用量最高的20篇论文(2014-2017)
  3. python函数参数定义顺序_18 Python - 函数定义与参数
  4. Vue学习笔记之15-vue-router详解
  5. 二维数组求最小值_求一列中满足条件的最大最小值
  6. 简单 python 小说爬虫 ultimate
  7. js+svg实现的一个环图
  8. Scrapy入门操作
  9. 李炎恢的课程中心(JQUERY视频)
  10. Python List Comprehension