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

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推