JDBC的抽取和封装实例

core java 示例代码 新手们可通过示例代码学习core java 立即下载

工具类:

package com.zhangxin9727.jdbc_utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

//JDBC工具类
public class JDBCUtils {
    public static final String driverClass;
    public static final String url;
    public static final String username;
    public static final String password;

    static {
        //加载并解析属性文件
        Properties props = new Properties();
        //通过类加载器获取
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        try {
            props.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driverClass = props.getProperty("driverClass");
        url = props.getProperty("url");
        username = props.getProperty("username");
        password = props.getProperty("password");
    }

    //注册驱动
    public static void loadDriver() throws ClassNotFoundException {
        Class.forName(driverClass);
    }

    //获得连接方法
    public static Connection getConnection() throws Exception {
        loadDriver();
        Connection conn = DriverManager.getConnection(url, username, password);
        return conn;
    }

    //资源释放
    public static void release(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            stmt = null;
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }

    public static void release(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        release(stmt, conn);
    }
}

测试类:

package com.zhangxin9727.jdbc_utils;

import org.junit.Test;

import java.sql.Connection;
import java.sql.Statement;

public class JDBCTest {
    @Test
    //保存记录
    public void test1() {
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            stmt = conn.createStatement();
            String sql = "INSERT user VALUES (null, 'dfg','987','张')";
            int num = stmt.executeUpdate(sql);
            if (num > 0) {
                System.out.println("保存成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(stmt, conn);
        }
    }
}

资源文件:

driverClass = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/jdbctest?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8
username = root
password = mypassword

数据库:

CREATE DATABASE jdbctest;
USE jdbctest;
CREATE TABLE user(
    uid INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(20),
    password VARCHAR(20),
    name VARCHAR(20)
);
INSERT user VALUES (NULL, 'aaa', '111', 'Alice'), (NULL, 'bbb', '222', 'Bob'), (NULL,'ccc', '333', 'Cidy');
MySQL安装配置教程(超级详细) 一、 下载MySQL Mysql官网下载地址:MySQL :: Download MySQL Installer (Archived Versions) 1. 选择要安装的版本,本篇文章选择的是5.7.31版本,点击Download下载 正在上传…重新上传取消 二、 安装MySQL 1. 选择设置类型双击运行mysql-installer-community-5.7.31.0.msi 这里选择是自定义安装,所以直接选择“Custom”,点击“Next” “Developer Default”是 阅读详情

相关推荐

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2195

Spring4整合Hibernate4详细示例

1. Spring整合Hibernate,主要是解决什么问题? a、让Spring提供的IOC容器来管理Hibernate的SessionFactory b、让Hibernate使用Spring提供的声明式事物 2. 整合步骤: 新建一个Java工程,并新建用来保存依赖jar包的lib目录 ①. 加入Hibernate...

weixin_30596023的博客 445

《探秘 BME680温度湿度气压气体传感器模块:环境感知的卓越之选》:此文为AI自动生成

BME680 是一款由博世公司推出的集成环境传感器模块,在环境监测和物联网等领域中发挥着重要作用。它能够同时测量温度、湿度、气压和气体浓度等多个环境参数,为各种应用提供准确可靠的环境数据。该模块采用小巧的封装形式,便于集成到各种设备中,无论是智能家居、可穿戴设备还是工业监测系统,都能轻松适配。例如,在智能家居系统中,BME680 模块可以监测室内环境参数,如温度、湿度、气压和空气质量等。通过与智能家居控制器或智能手机应用程序的连接,用户可以实时了解室内环境状况,并根据需要进行调整。

zheng_ruiguo的专栏 1866

Javaweb之简单例子(一)

Javaweb 之简单例子(一) 目录: 一、简述 ...

Genven_Liang的博客 2万+

Rocky Linux 9 离线环境Docker部署全攻略:从依赖打包到服务启动

本文详细介绍了在Rocky Linux 9纯离线环境中部署Docker的完整流程。从在联网环境精准下载Docker静态二进制包及所有系统依赖RPM包,到在隔离服务器上按顺序安装依赖、部署二进制文件、配置systemd服务并进行权限与网络调优,提供了从零到一的可复现实战指南。文章重点解决了离线部署的核心难题,并分享了搭建私有镜像仓库等进阶技巧,是运维人员在严格网络管控环境下部署容器服务的必备参考。

pytorchlight8的博客 138

导数在工程与AI中的12个实战应用解析

导数作为数学中的基本概念,本质是描述变化率的工具,其核心价值在于将非线性问题局部线性化处理。从原理上看,通过极限过程捕捉函数瞬时变化特性,使工程师能精确控制系统动态行为,帮助科学家量化自然规律变化速率。在技术实现层面,现代符号计算(如Mathematica)、数值计算(如MATLAB)和自动微分(如PyTorch)工具链的发展,大幅提升了导数计算的效率与精度。典型应用场景涵盖机械控制(如ABS防抱死系统)、金融工程(如期权希腊值计算)、医疗影像(如Canny边缘检测)等领域。特别在机器学习中,反向传播算法依

weixin_35509395的博客 316

java 反射实例

什么是(Reflection)反射?其它语言有这种特点吗? 答:Java中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装配,无须在组件之间进行链接。反射允许在编写与执行时,使用程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。这种反射成为构建灵活应用的主要工具。需注意的是,如果使用不当,反射的成本会很高。 Java中的类反射Reflection...

司天宏的博客 2352

CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南

本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。

weixin_42530458的博客 587

java线程池实例及总结(以多路socket通信为例)

(一)线程池概念 我们知道,多线程是针对多任务处理的,可以多线程可以并发执行多个任务,提高了程序执行效率。但是线程的创建和销毁需要时间,如果频繁创建和销毁线程,可能会影响执行效率,线程池可以解决这个问题。顾名思义,线程池可以理解为一个预先创建的线程集合,每次有任务来的时候,从线程池中取得一个线程去执行任务(如果线程池无空闲线程,可能要新建线程或者等待),执行完毕后线程暂不销毁,等待执行下一个任务...

poetteaes的博客 9978

腾讯股票接口API(1)——根据股票代码获取详情

获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。 1.简要信息 以贵州茅台为例: http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL 可以直接在Android项目中请求,会得到如下一串字符串: v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A"; 这里v_s代表简要信息,sh600519

GeofferySun的专栏 6万+

差分隐私(Differential Privacy)

差分隐私,拉普拉斯机制和高斯机制的证明

Michale_L的博客 1万+

Jdbc中对常用的代码进行抽取封装

问题背景 jdbc代码中有许多重复的代码,每次写都会很麻烦 因此,可以将这些重复的代码,抽取出来,封装成类中的静态方法,以便方便调用,提高代码的复用性。 思路分析 jdbc 中常用的代码块有: 1.注册驱动 2.获取连接对象 3.释放资源 #具体步骤 ##1.释放资源 ###1.1分析需要释放的资源: 结果集对象(resultset)执行sql语句的对象(statement)以及获取连接的对象(c...

qq_42731393的博客 229

wireshark抓包分析TCP协议和用Fiddler抓包Https分析

wireshark抓包分析TCP协议和用Fiddler抓包Https分析 1.实验说明: 以某种游戏的客户端连接服务器、断开服务器为例,用wireshark抓包分析TCP协议的三次握手连接、四次握手断开,与计算机网络原理进行验证;用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 2.实验过程: wireshark实验: (1)实验准备:安装《洛克王国》游戏客户端, 运行洛克王国客户端,打开内存资源管理器查看PID 根据PID查看洛克王国服务端的IP地址和端口号 并打开命令行运行以下命令: n

qq_42032327的博客 1257

5. JDBC工具类的抽取 - 封装获取连接、关闭资源

5. JDBC工具类的抽取 - 封装获取连接、关闭资源前言在前面的篇章中,我使用了 Statement 完成 JDBC 增删改查,而且我们可以发现在代码中,存在代码重复的地方,例如:获取数...

DevOps海洋的渔夫@专栏 623

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)

单个别名定义别名包扫描器(推荐使用此方式),整个包下的类都被定义别名,别名为类名,不区分大小写六、映射器(mappers)

2401_84152911的博客 1169

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件

1. 新建一个JDBCProperties工程 2. 编写JDBCUtil.java package com.lywgames.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import j

aihiao的专栏 160

--JDBC--抽取工具类--封装getConnection()和Close()

package com.sise.util; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.sql.*; import java.util.Properties; /** * 工具类的作用:简化繁琐重复的代码 * 抽取:连接数据库和释放资源(重复性高) * */ public class JdbcUtil {.

weixin_44320200的博客 327

03.JDBC高级篇_工具类封装_连接标识

高级篇 一、JDBC优化和工具类封装 1.1 存在的问题 我们发现,虽然连接池解决了用户频繁请求释放连接造成的资源浪费,但有这些问题: 用户连接一次就要写 创建连接池、建立连接、连接回收的代码,存在代码冗余的问题 —> 工具类封装 用户频繁连接,会对应连接池不同的新连接,在使用事务时,用户无法保证事务的正常提交 -> 怎么让用户线程在一段时间内标识唯一的连接? --> map 1.2 解决1:工具类的封装 使用druid的配置文件 driverClassName=com.mysql.c

yuezi的博客 839

细致刨析JDBC ③ 高级篇

③ 隔离性(lsolation):事务的隔离性是指一个事务的执行不能被其他事务干扰, 即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。④ 持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的, 接下来的其他操作和数据库故障不应该对其有任何影响·① 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生, 要么都不发生。② 回滚事务:让当前连接的操作,回滚到数据修改之前的状态。

m0_73983707的博客 1038

DBUtils的概述

1.1.1什么是DBUtils 对JDBC的简单封装,而且没有影响性能。 1.1.2为什么要学习DBUtils 因为JDBC手写比较麻烦,而且有非常多的代码是类似的。比如获得连接,预编译SQL,释放资源等..那么可以将这些代码抽取出来放到工具类中。将类似的代码进行抽取。大大简化JDBC的编程。 ...

qq_40208605的博客 198

idea jdbc封装_IDEA中写一个不太一样的JDBC工具类

今天和大家分享一个关于JDBC的工具类封装,想给大家分享一个不太一样的JDBC工具类,好了,直接开始今天的学习吧!我们今天的任务是:抽取JDBC工具类,名字就叫JDBCUtils,抽取的目的是为了简化代码的书写量,那我们先分析一下,哪些需要抽取。1. 注册驱动需要抽取2. 抽取一个方法获取连接对象,但是我们并不想传递参数(因为比较麻烦,而且抽取也没有什么意义),还得保证工具类的通用性。解决办法:我...

weixin_39954569的博客 175

JDBC 学习笔记

目录   一、JDBC简介 二、JDBC 的开发步骤 三、JDBC 的简单使用 四、抽取 JDBC 工具类 五、SQL 的注入(了解) 六、PreparedStatement 的简单使用 七、封装数据 八、Properties 配置文件 8.1 编写 jdbc.properties 文件 8.2 重写 JDBCUtils.java  九、整篇博客用到的 Java 代码打包地...

weidong_y的博客 3760

JDBC---把查询的结果封装到相应的实体上(实体类entity) 把对每一张表的操作封装到相应的类上(操作类Dao) 抽取一个dao的公共父类 可变长度的参数

JDBC---把查询的结果封装到相应的实体上(实体类entity) 把对每一张表的操作封装到相应的类上(操作类Dao) 抽取一个dao的公共父类 可变长度的参数

BUG专业户 1913

JAVA EE之JDBC

一: JDBC的基本用法 1:创建数据库连接对象     1 在工程中导入第三方的jar文件。(数据库驱动类)          2 加载驱动类         Class.forName("com.mysql.jdbc.Driver");//类加载。     3 创建数据库连接对象      String url ="jdbc:mysql://127.0.0.1:3306/heda...

蓝莓味的鱼 407

抽取JDBC工具类的方法

抽取JDBC工具类的方法抽取JDBC工具类目的:简化书写 抽取JDBC工具类 目的:简化书写 分析: 1、注册驱动抽取 2、抽取一个方法获取连接对象 需求:不想传递参数(麻烦),还得保证工具类的通用性。 解决:配置文件 3、释放资源方法的抽取 下面为配置文件properties /* driver也写在了配置文件中 */ url=jdbc:mysql://localhost:3306/db4?serverTimezone=UTC&characterEncoding=utf8 user=root pa

feimeng4s的博客 278

JDBC与JDBC工具类与数据源与JdbcTemplete

# JDBC与JDBC工具类 前部分就是上一篇jdbc与jdbc工具类的内容,增加了jdbc数据库连接池DataSource与jdbctemplete的内容 JDBC 抽取JDBC工具类 使用JDBC数据库连接池 JDBCTemplete 代码 最原始的jdbc 抽取jdbc工具类 自己更改后的JDBC工具类(不确定是否有问题) 使用C3P0后的jdbc工具类抽取 使用Drui...

wang_Fan1_1的博客 502
上一篇: PreparedStatement的简单操作案例
下一篇: c3p0的简单使用
ZX9727
博客等级 码龄9年 0粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值