[Java Web]JDBC综合实践->Java操作MySQL数据库(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: [Java Web]JDBC综合实践->Java操作MySQL数据库

本文介绍JDBC的实践案例,是对JDBC的综合操作讲解(文中附有详细代码)

了解并熟悉JDBC,请看我的另一篇文章:

image.png

1、需求

需求:完成商品品牌数据的增删改查操作(增删改查)

       ①查询:查询所有数据

       ②添加:添加品牌

       ③修改:根据id修改

       ④删除:根据id删除

2、工程目录

最终完成后的工程目录如下:

       

2.1、工程目录说明

该工程下的JDBC模块存放此次实践案例的相关文件。

模块下创建了两个文件:lib和src。

       lib放的是需要的驱动jar包

       src放的是主要实现代码和Druid框架的配置文件druid.properties。

2.2、src文件

src下有两个二级包,分别为com.operation和com.sql。

       ①operation包下有两个类:分别是encapsulationTool封装工具类和operations操作类。

               encapsulationTool的内容是把表单信息添加进实体类,后续有详细说明

               operations是本次的主体,里面包含了所有本次需求的实现代码

       ②sql包下有两个类:分别是information表单信息类和sqlInitialForMySQL初始化

               information是MySQL中的commodity数据库中的information表的实体类

               sqlInitialForMySQL是将JDBC的八个步骤中一些相同的步骤提取出来单独成类来实现,

                       以达到简化代码量的效果

3、准备工作

3.1、⭐开启MySQL

本次的实践案例连接的是本地的MySQL数据库,所以要记得开启本地的MySQL服务。

如果不开启服务,所有的操作一律报错。

操作:

       win+R,cmd,按住Ctrl+Shift+Enter,以管理员模式打开终端。

       命令->开启:net start mysql

                 关闭:net stop mysql

3.2、数据初始化

接下来要先创建一个commodity商品类型的数据库,在该数据库中创建一个information表单来存储信息,在information表单中创建具体的表存储信息。如下:

information表中依次存放六种信息:

       id:唯一标识,使用主键约束(primary key),设置自动增长(auto_increment);

       brand:品牌名称

       company:公司名称

       sort:排序字段 (注:在本次实践案例中暂时没用上)

       description:描述信息

       status:状态信息,只有0和1两种,分别代表禁用、启用。 (注:在本次实践案例中暂时没用上)

3.3、导入驱动包

本次案例实践的驱动包一共有四个:

       druid-1.1.12.jar

       hamcrest-core-1.3.jar

       junit-4.13.1.jar

       mysql-connector-java-5.1.48.jar

将上述四个驱动包导入到lib文件夹,并添加到项目依赖中。

3.4、驱动包介绍

Druid和MySQL驱动包的解释,详细查看我的另一篇文章中的 "5、数据库连接池" :

image.png

junit驱动主要是用来编写单元测试类,代替实践案例中所需要的main方法。

如果不导入hamcrest驱动,使用junit的测试注解会出现问题:

3.5、回顾JDBC代码步骤

3.5.1、原先步骤

3.5.2、🔺🔺改进步骤

说明:

       在原来的JDBC八个步骤中,第一步导入jar包的操作,在一开始已经完成了;

       第二部注册驱动,在MySQL 5开始的驱动包中不需要手动注册,会自动扫描驱动

       第三步获取连接,原来的获取方式有造成资源浪费的明显缺点,所以由连接池代替

       第五步获取执行对象,存在SQL注入漏洞,所以由获取预编译执行对象代替

所以,改进完成之后的JDBC操作为十个步骤:

  1. 导入相关jar包
  2. 定义Druid的druid.properties配置文件
  3. 加载配置文件
  4. 获取连接池对象
  5. 获取连接
  6. 定义SQL
  7. 获取预编译SQL执行对象
  8. 执行SQL
  9. 处理结果
  10. 释放资源

4、代码实现

4.1、druid.properties

关于这个配置文件的书写,详细查看我另一篇文章中的 "5.3.2、定义配置文件":

image.png


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
1
分享
相关文章
从理论到实践:使用JAVA实现RAG、Agent、微调等六种常见大模型定制策略
大语言模型(LLM)在过去几年中彻底改变了自然语言处理领域,展现了在理解和生成类人文本方面的卓越能力。然而,通用LLM的开箱即用性能并不总能满足特定的业务需求或领域要求。为了将LLM更好地应用于实际场景,开发出了多种LLM定制策略。本文将深入探讨RAG(Retrieval Augmented Generation)、Agent、微调(Fine-Tuning)等六种常见的大模型定制策略,并使用JAVA进行demo处理,以期为AI资深架构师提供实践指导。
237 73
|
5月前
|
Java内存模型深度解析:从理论到实践####
【10月更文挑战第21天】 本文深入探讨了Java内存模型(JMM)的核心概念与底层机制,通过剖析其设计原理、内存可见性问题及其解决方案,结合具体代码示例,帮助读者构建对JMM的全面理解。不同于传统的摘要概述,我们将直接以故事化手法引入,让读者在轻松的情境中领略JMM的精髓。 ####
80 6
Java中的异常处理:理解与实践
【10月更文挑战第42天】在Java的世界中,异常处理是每个开发者必须面对的挑战。它就像是一场不可预知的风暴,可能会在任何时候突然降临,打乱我们的计划。但是,如果我们能够掌握正确的处理方法,这场风暴也可以变成推动我们前进的力量。本文将带你深入理解Java中的异常处理机制,通过代码示例,我们将一起学习如何捕获、处理和预防异常,让你的程序在面对任何挑战时都能保持稳健和优雅。
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
本文介绍了阿里云 Java Agent 4.x 版本在基于 OTel Java Agent 二次开发过程中的实践与思考,并重点从功能、性能、稳定性、兼容性四个方面介绍了所做的工作。同时也介绍了阿里云可观测团队积极参与开源建设取得的丰厚成果。
527 16
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
290 7
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
134 9
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
Java中的多线程编程:从基础到实践
本文深入探讨了Java多线程编程的核心概念和实践技巧,旨在帮助读者理解多线程的工作原理,掌握线程的创建、管理和同步机制。通过具体示例和最佳实践,本文展示了如何在Java应用中有效地利用多线程技术,提高程序性能和响应速度。
133 11

热门文章

最新文章