文章目录

  • 一 Spring Data简介
  • 二 Spring Boot集成JDBC
    • 2.1 项目创建步骤
    • 2.2 测试的SQL脚本
    • 2.3 编写yaml配置文件连接数据库
    • 2.4 IDEA连接数据库步骤【非必要的步骤】
    • 2.5 测试
    • 2.6 运行结果
    • 2.7 对运行结果的探究
    • 2.8 遇到的错误
      • 2.8.1 问题1:jdk编译版本
      • 2.8.2 解决方法
      • 2.8.3 问题2:spring Boot版本过高
      • 2.8.4 解决方法
    • 2.9 JdbcTemplate简介
    • 2.10 编写Controller测试
    • 2.11 遇到的问题

一 Spring Data简介

  • Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。
  • 对于数据访问层,关系数据库【SQL】、非关系数据库【NOSQL】,Spring Boot底层都是采用Spring Boot进行统一处理。
  • Spring Boot官网
  • 数据库相关的启动器参考文档

二 Spring Boot集成JDBC

2.1 项目创建步骤

  1. 选择Spring Initializr生成器,填写相关信息
  2. 选择Spring Boot版本和需要的项目依赖
  • 项目依赖

    • Spring Web
    • JDBC API
    • MYSQL Driver

MYSQL Driver和JDBC API都位于SQL选择下面

2.2 测试的SQL脚本

CREATE TABLE `user` (                                                                                                                                                                                              `id` int NOT NULL,                                                                                                                                                                                               `name` varchar(30) DEFAULT NULL,                                                                                                                                                                                 `pwd` varchar(30) DEFAULT NULL,                                                                                                                                                                                  `perms` varchar(100) DEFAULT NULL,                                                                                                                                                                               PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into user2 values
(1,'yang','123456'),
(2,'酸梅汤小王子','888888'),
(3,'李五','112233'),
(4,'小明','123456'),
(5,'西瓜姑娘','852963741'),
(6,'阿毛','5211314');

2.3 编写yaml配置文件连接数据库

  • 在resources目录下,创建application.xml文件,编写如下代码
spring:datasource:username: rootpassword: xxxxurl: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Driver

2.4 IDEA连接数据库步骤【非必要的步骤】

  1. 打开右侧侧边栏中的数据库
  2. 点击新打开窗口的左侧+号图标
  3. 选择数据源类型
  4. 填写用户名和密码
  5. 点击测试按钮进行连接测试
  6. 选择架构,选择使用的数据库,点击确定即可

2.5 测试

  • 编写完配置文件后,SpringBoot会默认进行了自动配置
  • 在test下的测试中进行测试
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.liquibase.DataSourceClosingSpringLiquibase;
import org.springframework.boot.test.context.SpringBootTest;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;@SpringBootTest
class Springboot04DataApplicationTests {@AutowiredDataSource dataSource;@Testvoid contextLoads() throws SQLException {//查看一下默认的数据源System.out.println(dataSource.getClass());Connection connection = dataSource.getConnection();System.out.println(connection);connection.close();}}

2.6 运行结果

2.7 对运行结果的探究

  • 我们并没有手动配置,为什么是class com.zaxxer.hikari.HikariDataSource

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

  • 可以在DataSourceAutoConfiguration文件中看到如下内容【大概在115行左右】

@Import({DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class, DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class, DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class})
protected static class PooledDataSourceConfiguration {protected PooledDataSourceConfiguration() {}
}
  • 这里导入的类都在 DataSourceConfiguration 配置类下,Spring Boot2.7.6默认使用HikariDataSource 数据源

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

2.8 遇到的错误

2.8.1 问题1:jdk编译版本

spring boot java: 无效的目标发行版: 17

2.8.2 解决方法

  1. 修正编辑器里的配置
  2. 修正项目结构中的配置

  3. 修正pom.xml中的java版本

2.8.3 问题2:spring Boot版本过高

  • 61.0的版本对应的是java11
  • 52.0对应的是java1.8(java8)
java: 无法访问org.springframework.boot.SpringApplication
错误的类文件: /C:/environment/apache-maven-3.6.3/maven-repo/org/springframework/boot/spring-boot/3.0.2/spring-boot-3.0.2.jar!/org/springframework/boot/SpringApplication.class类文件具有错误的版本 61.0, 应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。

2.8.4 解决方法

  • 修改pom.xml中父级spring boot的版本配置
  • 这里使用的java版本是1.8,spring boot的版本是2.7.6

作者创建项目时Spring Boot的版本是3.0.2,然后又因为版本问题将其降为2.7.6,然后又更新maven,所以这里说时Spring Boot版本为2.7.6应该是合理的

2.9 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方法 用于执行存储过程、函数相关语句。

2.10 编写Controller测试

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.Map;/*** @author 缘友一世* date 2023/1/21-21:08*/
@RestController
public class jdbcController {@AutowiredJdbcTemplate jdbcTemplate;@RequestMapping("/userList")public List<Map<String,Object>> userList() {String sql="select * from user";List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);return list;}@GetMapping("/addUser")public String addUser() {String sql="insert into mybatis.user(id,name,pwd) values(4,'小明','123456')";jdbcTemplate.update(sql);return "update success";}@GetMapping("/updateUser/{id}")public String updateUser(@PathVariable("id") int id) {String sql="update mybatis.user set name=?,pwd=? where id="+id;//封装Object[] objects = new Object[2];objects[0]="小明2";objects[1]="xxx";jdbcTemplate.update(sql,objects);return "updateUser-ok";}@GetMapping("/deleteUser/{id}")public String deleteUser(@PathVariable("id") int id) {String sql="delete from mybatis.user where id=?";jdbcTemplate.update(sql,id);return "deleteUser success";}
}

2.11 遇到的问题

  • 启动后访问相关页面,找不到页面
This application has no explicit mapping for /error, so you are seeing this as a fallback.
  • 原因

    • Controller目录创建的位置有误
  • 解决方法
    • 将Controller层放到SpringbootDataApplication的同目录下

Spring Boot操作数据库学习之整合JDBC相关推荐

  1. 第五章 Spring Boot的数据库编程

    若有错,请指出 第二章 搭建Springboot环境,配置视图解析器jsp页面 第三章 全注解下的Spring Ioc 第四章 约定编程-Spring AOP 第五章 Spring Boot的数据库编 ...

  2. spring boot要如何学习?

    spring boot要如何学习? 链接:https://www.zhihu.com/question/53729800/answer/255785661 . 推荐以 Spring Boot 教程与 ...

  3. MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB

    Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作.Spring Boot的目的是提供一组工具,以便快速构建容易配置的Spring应用程序,省去大量传统S ...

  4. Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster

    文章目录 Pre Jedis操作Redis Cluster 添加依赖 Code Spring Boot 操作Redis Cluster 引入 依赖 application.yml Code Pre R ...

  5. Spring Boot 操作 Excel

    Spring Boot 操作 Excel 1 新建 Spring Boot Maven 示例工程项目 2 依赖引入 Pom.xml 3 操作 Excel 3.1 创建 Workbook 3.2 创建工 ...

  6. Spring Boot 操作 Redis教程

    Spring Boot 操作 Redis教程 在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了 使用 Java 操作 Redis 的方案很多,Jedis 是 ...

  7. spring boot操作mysql数据库:自动建表,数据添加、查询和修改

    1 mysql自动建表 (1)首先使用IntelliJ IDEA新建spring boot工程,然后在pom.xml中加入mysql的依赖: <!-- MYSQL --><depen ...

  8. Spring Boot Log4j2 日志学习

    简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...

  9. Spring Boot(十三):整合Redis哨兵,集群模式实践

    前面的两篇文章(Redis的持久化方案, 一文掌握Redis的三种集群方案)分别介绍了Redis的持久化与集群方案 -- 包括主从复制模式.哨兵模式.Cluster模式,其中主从复制模式由于不能自动做 ...

最新文章

  1. oracle rac服务供应商,【Oracle Database】Oracle RAC(八):服务资源管理
  2. 自定义YUM软件仓库----FTP网络YUM源-----网络YUM源的配置
  3. linux-grub修复5步搞定
  4. 操作系统(王道笔记第三章内存)
  5. 最受欢迎中文机器学习课程,台大李宏毅老师公开课2019版上线!
  6. android视频录制(调用系统视频录制),生成缩略图
  7. 互联网广告获客渠道有哪些?
  8. jQuery的加法运算,val()获取的结果相加变成了字符串连接。
  9. AFR 去嵌 Deeembedding 软件工具
  10. 【操作系统】实时调度
  11. DELPHI利WMI获得硬盘参数
  12. 电脑记事本在哪个文件夹
  13. Linux网络编程 | UDP编程
  14. 标准差σ未知_标准差σ的4种计算公式
  15. 安卓自定义悬浮按钮实现
  16. linux iio 设备驱动,FS4412开发板使用Linux IIO驱动框架实现ADC驱动
  17. Fcitx 小企鹅输入法3.0.0
  18. PPT模板制作如何添加动画?
  19. C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
  20. 布局未来移动出行,需要怎样的互联汽车解决方案?

热门文章

  1. AirPods Max独立耳垫开箱:采用简洁包装
  2. IP数据报重组与分片 与多道程序设计的优点
  3. 【Python的自学之路】(二):学习python的基础知识
  4. 一款翻译机背后的全球经济浪潮
  5. VMware宿主机NTP服务启动——ESXi6.5
  6. 创建oracle表sql语句,oracle基本表sql创建语句解析
  7. Vj程序设计作业H12
  8. 2019年采用大数据发生重大变化的6个行业
  9. 男孩取名:坚韧不拔、有诗意的男孩名字
  10. 系统自动更新提示安装MSXML 4.0 SP2安全性(kb936181)的解决办法