被缠上了,小王问我怎么在 Spring Boot 中使用 JDBC 连接 MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 被缠上了,小王问我怎么在 Spring Boot 中使用 JDBC 连接 MySQL

上次帮小王入了 Spring Boot 的门后,他觉得我这个人和蔼可亲、平易近人,于是隔天小王又微信我说:“二哥,快教教我,怎么在 Spring Boot 项目中使用 JDBC 连接 MySQL 啊?”


收到问题的时候,我有点头大,难道以后就要被小王缠上了?




没等我发牢骚,小王就紧接着说:“二哥,你先别生气,上次你帮了我的忙后,我在心里感激了你一晚上,想着第一次遇到这么亲切的大佬,一定要抱紧大腿。。。。。”


马屁拍到这份上,我的气自然也就消了。随后,我花了五分钟的时间帮他解决了苦恼,没成想,他又发给我了一个小红包,表示对我的感谢。并建议我再写一篇文章出来,因为他觉得像他这样的小白还有很多。没办法,我关上门,开了灯,开始了今天这篇文章的创作。


01、初始化 MySQL 数据库


既然要连接 MySQL,那么就需要先在电脑上安装 MySQL 服务(本文暂且跳过),并且创建数据库和表。


CREATE DATABASE `springbootdemo`;

DROP TABLE IF EXISTS `mysql_datasource`;

CREATE TABLE `mysql_datasource` (

 `id` varchar(64) NOT NULL,

 PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



02、使用 Spring Initlallzr 创建 Spring Boot 项目


创建一个 Spring Boot 项目非常简单,通过 Spring Initlallzr(https://start.spring.io/)就可以了。


image.png


勾选 Lombok、Web、MySQL Driver、Actuator、JDBC 等五个依赖。


1)Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的一些冗余代码,比如说可以通过注解生成 getter/setter。使用之前需要先在 IDE 中安装插件。


2)Web 表明该项目是一个 Web 项目,便于我们直接通过 URL 来实操。


3)MySQL Driver:连接 MySQL 服务器的驱动器。


4)Actuator 是 Spring Boot 提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。


5)JDBC:本篇文章我们通过 JDBC 来连接和操作数据库。


选项选择完后,就可以点击【Generate】按钮生成一个初始化的 Spring Boot 项目了。生成的是一个压缩包,导入到 IDE 的时候需要先解压。


03、编辑 application.properties 文件


项目导入成功后,等待 Maven 下载依赖,完成后编辑 application.properties 文件,配置 MySQL 数据源信息。


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver



1)spring.datasource. 为固定格式。


2)URL 为 MySQL 的连接地址。


3)username 为数据库的访问用户名。


4)password 为数据库的访问密码。


5)driver-class-name 用来指定数据库的驱动器。也可以不指定,Spring Boot 会根据 URL(有 mysql 关键字) 自动匹配驱动器。


04、编辑 Spring Boot 项目


为了便于我们操作,我们对 SpringBootMysqlApplication 类进行编辑,增加以下内容。


@SpringBootApplication
@RestController
public class SpringBootMysqlApplication {
  @Autowired
  private JdbcTemplate jdbcTemplate;
  @RequestMapping("insert")
  public String insert() {
  String id = UUID.randomUUID().toString();
  String sql = "insert into mysql_datasource (id,name) values ('"+id+"','沉默王二')";
  jdbcTemplate.execute(sql);
  return "插入完毕";
  }
}


1)@SpringBootApplication、@RestController、@RequestMapping 注解在之前的文章中已经介绍过了,这里不再赘述。


2)@Autowired:顾名思义,用于自动装配 Java Bean。


3)JdbcTemplate:Spring 对数据库的操作在 jdbc 上做了深层次的封装,利用 Spring 的注入功能可以把 DataSource 注册到 JdbcTemplate 之中。JdbcTemplate 提供了四个常用的方法。


①、execute() 方法:用于执行任何 SQL 语句。


②、update() 方法:用于执行新增、修改、删除等 SQL 语句。


③、query() 方法:用于执行查询相关 SQL 语句。


④、call() 方法:用于执行存储过程、函数相关 SQL 语句。


本例中我们使用 execute() 方法向 mysql_datasource 表中插入一行数据 {id:uuid, name:'沉默王二'}。


05、运行 Spring Boot 项目


接下来,我们直接运行 SpringBootMysqlApplication 类,这样一个 Spring Boot 项目就启动成功了。



这时候,我们可以直接浏览器的 URL 中键入 http://localhost:8080/insert 测试 MySQL 的插入语句是否执行成功。很遗憾,竟然出错了。



该怎么办呢?这需要我们在连接字符串中显式指定时区,修改 spring.datasource.url 为以下内容。


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?serverTimezone=UTC


重新运行该项目后再次访问,发现数据插入成功了。


image.png


为了确保数据是否真的插入成功了,我们通过 Navicat(一款强大的数据库管理和设计工具)来查看一下。


image.png


情况不妙,中文乱码了。该怎么办呢?需要我们在连接字符串中显式指定字符集,修改 spring.datasource.url 为以下内容。


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC


重新运行该项目后再次访问,发现中文不再乱码了。


image.png


快给自己点个赞。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
198 5
|
6月前
|
人工智能 运维 Java
SpringBoot+MySQL实现动态定时任务
这是一个基于Spring Boot的动态定时任务Demo,利用spring-context模块实现任务调度功能。服务启动时会扫描数据库中的任务表,将任务添加到调度器中,并通过固定频率运行的ScheduleUpdater任务动态更新任务状态和Cron表达式。核心功能包括任务的新增、删除与Cron调整,支持通过ScheduledFuture对象控制任务执行。项目依赖Spring Boot 2.2.10.RELEASE,使用MySQL存储任务信息,包含任务基类ITask及具体实现(如FooTask),便于用户扩展运维界面以增强灵活性。
238 10
|
4月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
430 0
|
7月前
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
337 5
|
9月前
|
Java 关系型数据库 MySQL
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
2332 45
|
8月前
|
Java 数据库连接
【YashanDB知识库】Springboot启动找不到崖山jdbc驱动的问题处理
本文来自YashanDB官网,主要解决SpringBoot应用启动时出现“找不到崖山JDBC驱动”的问题,尽管lib目录下已有yashandb-jdbc-1.6.9.jar文件。错误信息显示`java.lang.ClassNotFoundException: com.yashandb.jdbc.Driver`。解决方案为:通过`which java`等命令定位Java安装路径,将驱动jar包复制到JRE的`lib/ext`目录下,最后重启应用即可。
|
11月前
|
Java 数据库连接 数据库
springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
通过上述步骤,可以有效解决Spring Boot项目中遇到的 `java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver`问题。确保在项目中正确添加达梦数据库的JDBC驱动依赖,并在配置文件中正确配置数据源信息,是解决此问题的关键。通过这些方法,可以确保Spring Boot项目能够正确连接达梦数据库并正常运行。
2038 31
|
10月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
457 2
|
11月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
192 5
|
11月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
503 1

推荐镜像

更多
下一篇
oss云网关配置