Spring Boot操作数据库学习之整合JDBC
文章目录
- 一 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 项目创建步骤
- 选择Spring Initializr生成器,填写相关信息
- 选择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连接数据库步骤【非必要的步骤】
- 打开右侧侧边栏中的数据库
- 点击新打开窗口的左侧+号图标
- 选择数据源类型
- 填写用户名和密码
- 点击测试按钮进行连接测试
- 选择架构,选择使用的数据库,点击确定即可
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 解决方法
- 修正编辑器里的配置
- 修正项目结构中的配置
- 修正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简介
- 有了数据源
(com.zaxxer.hikari.HikariDataSource)
,然后可以拿到数据库连接(java.sql.Connection)
,然后就可以使用原生的 JDBC 语句来操作数据库。 - 即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封装,即 JdbcTemplate 。
- 数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。
- Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序员只需自己注入即可使用
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的同目录下
- 将Controller层放到SpringbootDataApplication的同目录下
Spring Boot操作数据库学习之整合JDBC相关推荐
- 第五章 Spring Boot的数据库编程
若有错,请指出 第二章 搭建Springboot环境,配置视图解析器jsp页面 第三章 全注解下的Spring Ioc 第四章 约定编程-Spring AOP 第五章 Spring Boot的数据库编 ...
- spring boot要如何学习?
spring boot要如何学习? 链接:https://www.zhihu.com/question/53729800/answer/255785661 . 推荐以 Spring Boot 教程与 ...
- MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB
Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作.Spring Boot的目的是提供一组工具,以便快速构建容易配置的Spring应用程序,省去大量传统S ...
- Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster
文章目录 Pre Jedis操作Redis Cluster 添加依赖 Code Spring Boot 操作Redis Cluster 引入 依赖 application.yml Code Pre R ...
- Spring Boot 操作 Excel
Spring Boot 操作 Excel 1 新建 Spring Boot Maven 示例工程项目 2 依赖引入 Pom.xml 3 操作 Excel 3.1 创建 Workbook 3.2 创建工 ...
- Spring Boot 操作 Redis教程
Spring Boot 操作 Redis教程 在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了 使用 Java 操作 Redis 的方案很多,Jedis 是 ...
- spring boot操作mysql数据库:自动建表,数据添加、查询和修改
1 mysql自动建表 (1)首先使用IntelliJ IDEA新建spring boot工程,然后在pom.xml中加入mysql的依赖: <!-- MYSQL --><depen ...
- Spring Boot Log4j2 日志学习
简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...
- Spring Boot(十三):整合Redis哨兵,集群模式实践
前面的两篇文章(Redis的持久化方案, 一文掌握Redis的三种集群方案)分别介绍了Redis的持久化与集群方案 -- 包括主从复制模式.哨兵模式.Cluster模式,其中主从复制模式由于不能自动做 ...
最新文章
- oracle rac服务供应商,【Oracle Database】Oracle RAC(八):服务资源管理
- 自定义YUM软件仓库----FTP网络YUM源-----网络YUM源的配置
- linux-grub修复5步搞定
- 操作系统(王道笔记第三章内存)
- 最受欢迎中文机器学习课程,台大李宏毅老师公开课2019版上线!
- android视频录制(调用系统视频录制),生成缩略图
- 互联网广告获客渠道有哪些?
- jQuery的加法运算,val()获取的结果相加变成了字符串连接。
- AFR 去嵌 Deeembedding 软件工具
- 【操作系统】实时调度
- DELPHI利WMI获得硬盘参数
- 电脑记事本在哪个文件夹
- Linux网络编程 | UDP编程
- 标准差σ未知_标准差σ的4种计算公式
- 安卓自定义悬浮按钮实现
- linux iio 设备驱动,FS4412开发板使用Linux IIO驱动框架实现ADC驱动
- Fcitx 小企鹅输入法3.0.0
- PPT模板制作如何添加动画?
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- 布局未来移动出行,需要怎样的互联汽车解决方案?