满足开闭原则的JDBCUtils~

我们都知道开闭原则即为对修改关闭,对拓展开放,那么对于实现既能通过DriverManager连接数据库,也能实现使用c3P0连接数据库,连接数据库的方式即为可变点,我们只需要使用抽象类或者接口封装可变点,再将可变点的每一个具体实现方式用一个类去描述

封装可变点:获取连接对象

package JDBC;import java.sql.Connection;
import java.sql.SQLException;public  abstract  class AbstractJDBCUtils {public abstract Connection getConnection() throws SQLException;//用于定义获取连接对象的抽象方法//关闭资源的方法.........
}

具体实现方式1:通过c3p0数据库连接池获取连接对象

package JDBC;import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class JDBCFromC3p0Source extends AbstractJDBCUtils{//通过使用c3p0获取连接对象的方法.......}
}

具体实现方式2:通过DriverManager获取连接对象

package JDBC;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class JDBCFromDriverManager extends AbstractJDBCUtils{@Overridepublic Connection getConnection() throws SQLException {//通过DriverManager获取连接对象的方法}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ip地址的正则表达式

ip地址的正则表达式 checkIpSpecial: {// 验证IP地址validator: function (value) {// var reg /^((1?\d?\d|(2([0-4]\d|5[0-5])))\.){3}(1?\d?\d|(2([0-4]\d|5[0-5])))$/;这个正则表达式的意思是:以数字开头,紧接着是一个点,然后再是数…

SecureCRT SSH与FTP连接中文乱码

1、首先要保证服务端环境变量是UTF-8编码的 LANG”zh_CN.UTF-8″ 2、会话里面配置好字符编码:UTF-8 SSH会话的窗口就可以正常显示中文了,效果如下 3、打开FTP或者SFTP时进行文件传输时,列表窗口里面还是乱码,需要把SecureCRT安…

猜数游戏 rust解法

给定答案序列和猜测序列,统计有几个数字位置正确,有几个数字在两个序列都出现过但位置不对。 输入包含多组数据。每组第一行是序列长度n,第二行是答案序列,接下来若干行是猜测序列。猜测序列全0时该组结束。n0时整个输入结束。 样…

【知识分享】Java获取当前日期是第几周且本周是几号到几号

加哥今天给大家提供一个获取当前日期是本年度的第几周的方法,且这周是几号到几号的工具类,供大家使用。 public static void main(String[] args) {//使用当前时间戳 System.currentTimeMillis()Current_week(System.currentTimeMillis()); }public st…

周界警戒AI算法+视频智能分析在安全生产场景中的应用

长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确…

科普:什么是视频监控平台?如何应用在场景中?

随着科技的发展,监控无处不在,就像一张密不透风的网,将生活中的角角落落都编织在一起。可是,你真的知道什么是安防视频监控平台吗?它可不止是一个简单的通电摄像头,如今的视频监控平台,涵盖了无…

Python爬虫基础(三):使用Selenium动态加载网页

文章目录 系列文章索引一、Selenium简介1、什么是selenium?2、为什么使用selenium3、安装selenium(1)谷歌浏览器驱动下载安装(2)安装selenium 二、Selenium使用1、简单使用2、元素定位3、获取元素信息4、交互 三、Phan…

Tomcat的启动问题

今天去打开Tomcat的时候没反应 如下 按之前是到Tomcat目录下的bin目录下的startup.bat文件,双击,就可以启动Tomcat服务器。启动后可以 打开浏览器,在浏览器地址栏中输入以下地址测试: 1、http://localhost:8080 2、http://127.…

c: Sorting Algorithms

SortAlgorithm.h /*****************************************************************//*** \file SortAlgorithm.h* \brief 业务操作方法* VSCODE c11 https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md* https://www.programiz.com/d…

35.肥皂泡动画效果

特效 源码 index.html <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Animated Soap Bubbles</title> <link rel="stylesheet" typ…

CSS中去掉li前面的圆点方法

1. 引言 在网页开发中&#xff0c;我们经常会使用无序列表&#xff08;<ul>&#xff09;来展示一系列的项目。默认情况下&#xff0c;每个列表项&#xff08;<li>&#xff09;前面都会有一个圆点作为标记。然而&#xff0c;在某些情况下&#xff0c;我们可能希望去…

ubuntu 22.04 服务器网卡无IP地址

ssh连接服务器连接不上&#xff0c;提示如下&#xff1b; 连接显示器&#xff0c;ip addr ls 命令查看IP地址&#xff0c;有网卡但没有IP地址 solution&#xff1a; sudo dhclient enp10s0用于通过 DHCP 协议获取网络配置信息并为名为 enp10s0 的网络接口分配 IP 地址,enp1…

【C++】AVL树

AVL树 1. AVL树的概念2. AVL树的实现2.1 节点的定义2.2 插入2.3 是否是AVL树 3. AVL树与红黑树 1. AVL树的概念 AVL树是一棵二叉搜索树&#xff0c;但它的每个节点的左右子树的高度差的绝对值不超过1&#xff0c;且它的子树也是平衡二叉树。左右子树的高度差也叫平衡因子&…

爬虫 — App 爬虫(二)

目录 一、Appium介绍二、node.js 安装三、Java 的 SDK 安装以及配置1、安装步骤2、配置环境变量 四、安卓环境的配置1、配置环境变量 五、Appium 安装1、安装2、打开 APP3、使用 六、Appium 使用1、定位数据&#xff08;方法一&#xff0c;不常用&#xff09;2、定位数据&#…

磁盘检测工具DiskInfo下载

网址&#xff1a;Download - Crystal Dew World [en] (crystalmark.info) PS:乍一看还以为是什么二次元网站 划到这里&#xff0c;下载zip 等待一会就会自动弹出下载了 选择合适的位置即可

token登录的实现

token登录的实现 我这种token只是简单的实现token&#xff0c;就是后端利用UUID 生成简单随机码&#xff0c;利用随机码作为在Redis中的键&#xff0c;然后存储的用户信息作为值&#xff0c;在每次合理请求的时候对token的有效时间进行刷新&#xff08;利用拦截器&#xff09;&…

Android App ~ LiveData

LiveData 两种更新数据方式 setValue(T value)postValue(T value) setValue()只能在主线程中调用&#xff0c;postValue()可以在任何线程中调用。 MutableLiveData 1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据. 2.其次LiveData其实也是一个观察者…

FPGA project : DS18B20

本想着一天发一个实验的&#xff0c;这个ds18b20&#xff0c;耗时两天。代码写了两次&#xff0c;呜呜~ 由于第二次写代码没画时序图&#xff0c;所以代码和时序图一些参数有些不一致&#xff0c;但问题不大。 这里有几件事情值得一提&#xff1a; 1&#xff1a;关于状态机的…

ceph分布式存储

ceph特点 Ceph项目最早起源于Sage就读博士期间的工作&#xff08;最早的成果于2004年发表&#xff09;&#xff0c;并随后贡献给开源社区。在经过了数年的发展之后&#xff0c;目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的…

【C语言】求一个整数的二进制序列中1的个数的三种方法

方法一&#xff1a;逐位%2法 该方法的初步测试代码如下: int NumberOf1(int n) {int count 0;while (n){if (n % 2 1){count;}n n / 2;}return count; } 众所周知&#xff0c;数据在内存里以补码的形式存储&#xff0c;这是为了简化计算机的结构设计&#xff0c;同时也提…