2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改

2024-06-21 02:44

本文主要是介绍2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JDBC案例

将来如果完成的话

就代表对JDBC里面的知识点全部融会贯通了

其实就是对数据的增删改查

我们入门做不出来前端的内容

很正常

准备环境

建表

use mybatis;create table tbl_brand
(id int primary key auto_increment,brand_name varchar(20),company_name varchar(20),ordered int ,description varchar(100),staus int);insert into tbl_brand(brand_name, company_name, ordered, description, staus)
values ('三只松鼠','三只松鼠股份有限公司',5,'好吃不上火',0),('华为','华为技术有限公司',100,'华为致力于把数字世界带给每个人','1'),('小米','小米科技有限公司',50,'are you ok',1);SELECT * from tbl_brand;

创建实体类

封装实体类

package pojo;public class Brand {private Integer id;private String brandName;private String companyName;private String ordered;private String description;private String status;public Brand() {}public Brand(Integer id, String brandName, String companyName, String ordered, String description, String status) {this.id = id;this.brandName = brandName;this.companyName = companyName;this.ordered = ordered;this.description = description;this.status = status;}/*** 获取* @return id*/public Integer getId() {return id;}/*** 设置* @param id*/public void setId(Integer id) {this.id = id;}/*** 获取* @return brandName*/public String getBrandName() {return brandName;}/*** 设置* @param brandName*/public void setBrandName(String brandName) {this.brandName = brandName;}/*** 获取* @return companyName*/public String getCompanyName() {return companyName;}/*** 设置* @param companyName*/public void setCompanyName(String companyName) {this.companyName = companyName;}/*** 获取* @return ordered*/public String getOrdered() {return ordered;}/*** 设置* @param ordered*/public void setOrdered(String ordered) {this.ordered = ordered;}/*** 获取* @return description*/public String getDescription() {return description;}/*** 设置* @param description*/public void setDescription(String description) {this.description = description;}/*** 获取* @return status*/public String getStatus() {return status;}/*** 设置* @param status*/public void setStatus(String status) {this.status = status;}public String toString() {return "Brand{id = " + id + ", brandName = " + brandName + ", companyName = " + companyName + ", ordered = " + ordered + ", description = " + description + ", status = " + status + "}";}
}

在实体类当中

基本数据类型建议使用对应的包装类

写测试用例

我们的测试类是放在example包下的

我们要做的是查询 添加 修改 删除 这四个功能

我们在之前学习到的

我们的JDBC写代码 都是7步

我们首先得写一个配置类

目的是获取数据库的连接

package config;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;public class GetConnection {public static Connection getConnection() throws Exception {//加载配置文件Properties prop=new Properties();prop.load(new FileInputStream("JDBC/druid.properties"));//获取连接池对象DataSource dataSource=DruidDataSourceFactory.createDataSource(prop);//获取数据库连接 ConnectionConnection connection=dataSource.getConnection();return connection;}
}

但是由于路径的缘故

我们把他写在测试里面

我们首先思考如何书写SQL;语句

然后获取连接

然后执行就行了

package example;import com.alibaba.druid.pool.DruidDataSourceFactory;import org.junit.Test;
import pojo.Brand;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;//品牌数据的增删改查
public class BrandTest {@Testpublic void testSelectAll() throws Exception {System.out.println(System.getProperty("user.dir"));//获取连接Properties prop=new Properties();prop.load(new FileInputStream("src\\druid.properties"));//获取连接池对象DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);//获取数据库连接 ConnectionConnection connection=dataSource.getConnection();//定义sql语句String sql = "select * from tbl_brand";//获取PreparedStatement对象PreparedStatement pstmt = connection.prepareStatement(sql);//设置参数//执行sqlResultSet rs = pstmt.executeQuery();//处理结果 List<Brand> 封装brand对象 装载List集合List<Brand> brands=new ArrayList<>();while (rs.next()) {//获取数据int id = rs.getInt("id");String brandName = rs.getString("brand_name");String companyName = rs.getString("company_name");int ordered = rs.getInt("ordered");String description = rs.getString("description");int stauts = rs.getInt("status");//封装Brand对象Brand brand=new Brand(id,brandName,companyName,ordered,description,stauts);//装载集合brands.add(brand);}//打印集合for (Brand brand : brands) {System.out.println(brand);}//释放资源rs.close();pstmt.close();connection.close();}}

测试通过

添加数据

我们查看一下页面原型

我们代码接收一个insert语句

插入数据就行

我们要插入除了id外的所有数据

id为递增且唯一

我们还是用PreparedStatement对象接收

我们以后在开发JDBC程序的时候

要注意三个事情

一个是SQL语句怎么书写

然后是要填入的参数

然后是返回值

例如这边的添加操作

package example;import com.alibaba.druid.pool.DruidDataSourceFactory;import org.junit.Test;
import pojo.Brand;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;//增 添加数据
public class TestAdd {@Testpublic void testSelectAll() throws Exception {//模拟接收页面提交的数据String brandName="香飘飘";String companyName="香飘飘";int ordered=1;String description="绕地球一圈";int status=1;//insert into tbl_brand(brand_name,company_name,ordered,description,status) values(?,?,?,?,?);//参数 需要 除了id之外的所有参数信息//返回值 booleanSystem.out.println(System.getProperty("user.dir"));//获取连接Properties prop=new Properties();prop.load(new FileInputStream("src\\druid.properties"));//获取连接池对象DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);//获取数据库连接 ConnectionConnection connection=dataSource.getConnection();//定义sql语句String sql = "insert into tbl_brand(brand_name,company_name,ordered,description,status) values(?,?,?,?,?);";//获取PreparedStatement对象PreparedStatement pstmt = connection.prepareStatement(sql);//设置参数pstmt.setString(1,brandName);pstmt.setString(2,companyName);pstmt.setInt(3,ordered);pstmt.setString(4,description);pstmt.setInt(5,status);//执行sqlint count=pstmt.executeUpdate();  //影响的行数//处理结果System.out.println(count>0);//释放资源pstmt.close();connection.close();}}

添加成功

修改数据

我们只是换了个SQL数据模型

和参数

即可

代码

package example;import com.alibaba.druid.pool.DruidDataSourceFactory;import org.junit.Test;
import pojo.Brand;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;//改 修改数据
public class TestUpdate {@Testpublic void testUpdate() throws Exception {//模拟接收页面提交的数据String brandName="香飘飘";String companyName="香飘飘";int ordered=1;String description="绕地球三圈";int status=1;int id=1;//update tbl_brand set brand_name = ?,company_name=?,ordered=?,description=?,status=? where id =? ;//参数 需要 所有参数信息//返回值 booleanSystem.out.println(System.getProperty("user.dir"));//获取连接Properties prop=new Properties();prop.load(new FileInputStream("src\\druid.properties"));//获取连接池对象DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);//获取数据库连接 ConnectionConnection connection=dataSource.getConnection();//定义sql语句String sql = "update tbl_brand set brand_name = ?,company_name=?,ordered=?,description=?,status=? where id =? ;";//获取PreparedStatement对象PreparedStatement pstmt = connection.prepareStatement(sql);//设置参数pstmt.setString(1,brandName);pstmt.setString(2,companyName);pstmt.setInt(3,ordered);pstmt.setString(4,description);pstmt.setInt(5,status);pstmt.setInt(6,id);//执行sqlint count=pstmt.executeUpdate();  //影响的行数//处理结果System.out.println(count>0);//释放资源pstmt.close();connection.close();}}

执行成功

瞅一眼数据库

成功修改

删除数据

不解释了

直接灵魂三问

改一下sql语句和获取PreparedStatement对象的参数即可

执行代码

package example;import com.alibaba.druid.pool.DruidDataSourceFactory;import org.junit.Test;
import pojo.Brand;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;//增 添加数据
public class TestDelete {@Testpublic void testDelete() throws Exception {//模拟接收页面提交的数据int id=1;//delete from tbl_brand where id= ?//参数 需要id//返回值 booleanSystem.out.println(System.getProperty("user.dir"));//获取连接Properties prop=new Properties();prop.load(new FileInputStream("src\\druid.properties"));//获取连接池对象DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);//获取数据库连接 ConnectionConnection connection=dataSource.getConnection();//定义sql语句String sql = "delete from tbl_brand where id= ?";//获取PreparedStatement对象PreparedStatement pstmt = connection.prepareStatement(sql);//设置参数pstmt.setInt(1,id);//执行sqlint count=pstmt.executeUpdate();  //影响的行数//处理结果System.out.println(count>0);//释放资源pstmt.close();connection.close();}}

删除成功

数据库中的数据成功删除

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

这篇关于2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079984

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优