书写JDBC工具类

1 将哪些操作抽取到工具类中

为什么要抽取工具类?
我们在执行CRUD的过程中,有太多的重复代码需要写,例如:注册驱动、获取连接、释放资源【可以优化dao层的代码
1 加载properties配置文件,获取连接数据库的相关参数,4个
加载一次,写到static静态代码块中
2 注册驱动
加载一次,写到static静态代码块中

3 提供一个静态方法,获取连接
4 提供一个静态方法,释放资源

2 在src中书写jdbc.properties配置文件

注:jdbc.properties配置文件不要写到包中了

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf8&usesSL=true
userName=root
passWord=123456

3 书写JDBCUtils工具类

public class JdbcUtils {private  static String url;private  static String userName;private  static String passWord;/*在JdbcUtils工具类中需要做哪些事?*1加载jdbc.properties文件,读取属性文件中的内容(只需加载一次)--静态代码块* 2注册驱动(只需加载一次)--静态代码块*///只加载一次static {//1加载jdbc.properties文件,读取属性文件中的内容(只需要加载一次)//1.1创建Properties对象try {Properties properties = new Properties();//1.2调用Load方法加载属性文件//反射中是获取Class对象,那么也就意味着Class对象我们不能new,//那么是哪里来的Class对象,也就是说谁帮我们创建了Class对象呢?InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");properties.load(is);//1.3从properties对象中根据key获取value值String driverClassName = properties.getProperty("driverClassName");url = properties.getProperty("url");userName = properties.getProperty("userName");passWord = properties.getProperty("passWord");//2.注册驱动Class.forName(driverClassName);} catch (Exception e) {e.printStackTrace();}}/** 3.获取连接(对外提供方法,可多次使用)* 4.释放资源(对外提供方法,可多次使用)* *///写成方法,可多次调用//获取连接public static Connection getConnection(){Connection  conn = null;try {conn = DriverManager.getConnection(url, userName, passWord);} catch (SQLException e) {e.printStackTrace();}return conn;}//释放资源【参数没有则传入null】public static void close(Connection conn, Statement stat,ResultSet rs){try {if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}try {if (rs != null) {stat.close();}} catch (SQLException e) {e.printStackTrace();}try {if (rs != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}
}

注:释放资源方法【参数没有则传入null】

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

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

相关文章

完整的MIME类型列表

转自: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types 这是一份比较全面的MIME类型列表,关联了文档的类别,以它们常见的扩展名排序。两种主要的MIME类型在默认类型中扮演了重要的…

大众点评Java开发实时应用监控平台-CAT

转载自 【推荐】大众点评Java开发实时应用监控平台-CATCAT介绍 CAT是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。 CAT作为大众点评网基础监控组件,它已经在中间件框架(MVC框架,RPC框架,数…

第三方连接池

1 连接池的概念和作用 问题:连接池的本质是什么?有什么作用? 概念:连接池的本质就是一个容器,该容器中会初始化一些Connection对象,我们程序只需要从连接池中获取连接,使用完毕之后归还连接即…

think-in-java(9)接口

【9】接口 【9.1】抽象类和抽象方法1)抽象方法:仅有方法声明而没有方法体;由abstract 修饰的方法;2)抽象类:如果一个类包含一个或多个抽象方法, 则该类声明为抽象类,由 abstract修饰…

Spring Boot日志集成

转载自 Spring Boot日志集成Spring Boot日志框架 Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输…

三大设计模式

1. 装饰者设计模式 <1>解决的问题&#xff1a;在不改变原有类方法源代码的情况下给方法进行增强&#xff0c;在实现的方法中调用原有对象的对应方法&#xff0c;也可对原有方法进行增强。 <2>要求&#xff1a;要实现接口的所有方法。 <3>弊端&#xff1a;…

硬盘与存储设备

转自鸟哥&#xff1a; http://cn.linux.vbird.org/linux_basic/0105computers_2.php#pc_hd 【1】基本概念 实际的数据都是写在具有磁性物质的磁碟盘上头&#xff0c;而读写主要是透过在机械手臂上的读取头(head)来达成。 实际运作时&#xff0c; 主轴马达让磁碟盘转动&#x…

17张图揭密支付宝系统架构

转载自 17张图揭密支付宝系统架构 支付宝的系统架构图&#xff0c;仅供参考。不管是不是支付行业&#xff0c;都值得我们参考&#xff0c;学习。

Linux系统分区和挂载浅谈

转自&#xff1a; https://blog.csdn.net/cc_net/article/details/2894510好久没有写BLOG了,之前出差了2个月,都没怎么看书,也没有太多时间写。回来后一个月人也有点放松。现在开始还是得继续努力啊。不废话了&#xff0c;下面就介绍下Linux系统的分区和挂载 一 Linux的安装 L…

jmap, jhat, jvisualvm:java堆内存对象分析利器

转载自 jmap, jhat, jvisualvm&#xff1a;java堆内存对象分析利器jmap -help查看命令用法。jmap -heap <pid> 查看堆使用情况。jmap -dump导出堆对象文件进行内存分析。jhat -J-Xmx512m -port 8888 1136.txt命令生成分析报告&#xff0c;可通过http访问。访问http://loc…

ajax异步请求

1 什么是异步请求&#xff1f; 在页面不重新加载的情况下&#xff0c;发送请求局部更新页面内容。2 jquery实现异步请求&#xff1f; $.ajax({url:"访问路径",data:"请求参数", //请求参数格式:"namevalue&namevalue&..." 或者 {name:…

Buffers与cached啥区别

转自&#xff1a; https://www.cnblogs.com/argb/p/3448744.html A buffer is something that has yet to be “written” to disk.A cache is something that has been “read” from the disk and stored for later use对于应用程序来说&#xff0c;buffers/cached 是等于可用…

Spring面试题(第一期)

转载自 Spring面试题&#xff08;第一期&#xff09;Spring作为现在最流行的java web开发框架&#xff0c;Spring的应用及其原理的深入了解是每个Java开发程序员必经之路&#xff0c;下面10道面试题是Java开发程序员面试时会经常遇到的题目。 1、为什么要使用Spring框架&#x…

vue的基本语法

vue的基本语法 new Vue({el:"css选择器",//表示vue对象接管的区域&#xff0c;只有在这一块区域内才可以使用vue的方法显示数据。data:{// 定义各种变量&#xff0c;将来变量的值在页面html标签中使用。name:"snake",age:20,user:{username:"jack&quo…

linux-basic(6)linux的文件权限与目录配置

【6.1】用户与用户组 1&#xff09;linux用户身份与用户组记录的文件/etc/passwd 默认情况下所有系统上的账号都记录在该文件&#xff1b;/etc/shadow 用户密码记录在该文件下&#xff1b;/etc/group linux的所有组名记录在该文件下&#xff1b;注意&#xff1a;这3个文件是 li…

阿里巴巴对Java编程【异常处理】的规约

转载自 阿里巴巴对Java编程【异常处理】的规约 异常处理 1. 【强制】 Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避&#xff0c;而不应该通过 catch 来处理&#xff0c;比如&#xff1a; IndexOutOfBoundsException &#xff0c; NullPointerException 等…

Http协议的请求和响应

1.HTTP协议介绍 HTTP(HyperTextTransferProtocol)&#xff1a;超文本传输协议。HTTP协议是基于TCP/IP协议的。基于请求/响应模型的: 一次请求对应一次响应。传输协议&#xff1a;客户端和服务器端的通信规则(握手规则)。 2.HTTP协议的请求 HTTP协议规定了客户端发给服务器的数…

centos上安装jdk

1&#xff09;下载jdk&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2&#xff09;放置到/usr/local/software/java 目录下&#xff0c;并解压 tar-xzv -f jdk*.gz 3&#xff09;配置环境变量 vim /etc/profile 追…

阿里巴巴对Java编程【单元测试】的规约

转载自 阿里巴巴对Java编程【单元测试】的规约 单元测试 1. 【强制】好的单元测试必须遵守 AIR 原则。 说明&#xff1a;单元测试在线上运行时&#xff0c;感觉像空气 &#xff08;AIR&#xff09; 一样并不存在&#xff0c;但在测试质量的保障上&#xff0c;却是非常关键的。好…

linux-basic(7)linux文件与目录管理

【7.1】目录与路径 【7.1.2】目录相关操作1&#xff09;特殊目录列表&#xff1a;(1)2&#xff09;目录操作命令&#xff0c;底下我们就来谈一谈几个常见的处理目录的命令吧&#xff1a;cd&#xff1a;变换目录pwd&#xff1a;显示目前的目录mkdir&#xff1a;创建一个新的目录…