【JavaWeb】2.封装jdbc工具类

Javaweb实现增删改查操作操作 Javaweb实现增删改查操作操作 一:准备工作 1:Idea编辑器(eclispe和myeclispe都可以,个人推荐使用idea),新建一个web项目 2:数据库mysql 3:需要提前了解的知识点 servlet el和jstl表达式 项目的基本的框架实现(Javaweb经典的三层架构) 4:UUID自动生成id的工具 5:在idea中生成的包结构 二:数据库的设计和实现操作 需要在设计库... 阅读详情
  1. 初始版本
public final class JDBCUtil{
    //定义数据库连接相关参数
    private static String driver = "";
    private static String url = "";
    private static String user = "";
    private static String password = "";
    
    //私有化构造方法
    private JDBCUtil(){}
    
    //加载配置文件
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        driver = bundle.getString("driver");
        url = bundle.getString("url");
        user = bundle.getString("user");
        password = bundle.getString("password");
        
        //注册驱动
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    //获取数据库连接
    public static Connection getConnection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
    
    //关闭资源
    public static void closeAll(Connection con, Statement stmt, ResultSet rs){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace():
            }
        }
        
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
  1. 为了保证每个能够开启以及回滚事务,需要改进的JDBCUtil
public final class JDBCUtil {
    private static String driver = "";
    private static String url = "";
    private static String user = "";
    private static String password = "";
    
    //创建ThreadLocal类的对象,用于维护每个线程的数据库连接
    private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
    //保证了每个线程只会有同一个Connection连接对象,如果使用单例的话,所有用户都必须要等待。
    
    //加载配置文件
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        driver = bundle.getString("driver");
        url = bundle.getString("url");
        user = bundle.getString("user");
        password = bundle.getString("password");
        
        //注册驱动
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    //获取数据库连接
    public static Connection getConnection() {
        if (threadLocal.get() == null) {
            try {
                threadLocal.set(DriverManager.getConnection(url, user, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        return threadLocal.get();
    }
    
    //关闭资源
    public static void closeAll(Connection con, Statement stmt, ResultSet rs){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace():
            }
        }
        
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        if (con != null) {
            try {
                con.close();
                threadLocal.remove();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
  1. 以上两种方式的配置文件
    jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jgs1904?useSSL=true&serverTimezone=GMT%2B8
user=root
password=root
  1. 使用alibaba的druid数据库连接池
public final class DataSourceUtil {

	private DataSourceUtil() {};
	
	private static Properties pro = new Properties();
	private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
	private static DataSource dataSource = null;
	
	static {
		// 1.将配置文件加载到properties集合内 
		InputStream is = Demo02.class.getClassLoader().getResourceAsStream("druid.properties");
		try {
			pro.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		// 2.使用properties集合内的配置参数初始化一个连接池
		try {
			dataSource = DruidDataSourceFactory.createDataSource(pro);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	// 获取数据库连接池
	public static DataSource getDataSource() {
		return dataSource;
	}
	
	// 获取数据库连接
	public static Connection getConnection() {
		if (threadLocal.get() == null) {
			try {
				threadLocal.set(dataSource.getConnection());
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return threadLocal.get();
	}
	
	// 关闭资源
	public static void closeAll(Connection con, Statement stmt, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

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

		if (con != null) {
			try {
				con.close();
				// 销毁threadLocal中的连接对象
				threadLocal.remove();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
}
  1. 配置文件 druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/jgs1904?useSSL=true&serverTimezone=GMT%2B8
username=root
password=root

#初始化时池中建立的连接数。
initialSize=2
#最大的可活跃的连接池数量
maxActive=300
#最大等待时间
maxWait=60000
#是否缓存preparedStatement
poolPreparedStatements=true
#池中能够缓冲的preparedStatement语句数量
maxPoolPreparedStatementPerConnectionSize=200
基于JDBC的JavaWeb开发项目之——网上教务系统 基于JDBC的JavaWeb开发项目之——网上教务系统 在这个文章里,我会详细的解释JavaWeb其中的一个框架——MVC框架来完成网上教务系统这一个项目。这个项目是使用JDBC去连接数据库,使用了JSP/servlet,在这个文章里我会详细写出一整个项目是如何写出以及思路是怎么样的。这算是比较简单的JavaWeb开发了,适合新手的学习,对有着基础编程能力的人有一定的帮助吧。如果是想要学习更加高阶... 阅读详情

相关推荐

【JAVA高级】——吃透JDBC中的封装工具类、ORM和Date工具类

吃透JDBC中的封装工具类、ORM和Date工具类

不迁怒,不贰过。小知识,大智慧。 2828

Java封装JDBC通用工具类

Java封装JDBC通用工具类

小张的博客 597

JDBC 数据库连接全解析:从驱动配置到工具类封装

后缀properties的文件是一种属性文件。这种文件以key=value格式存储内容Java中可以使用Properties工具类来读取这个文件项目中会将一些配置信息放到properties文件中,所以properties文件。

艺杯羹的博客 9321

JDBC工具类的封装

JDBC工具类的封装,封装获取数据库连接方法,获取preparedStatement对象的方法,解析ResultSet集合,关闭资源等方法

m0_48895748的博客 1664

半导体物理-Si晶体生长方向<2>

Si(硅)晶体的生长方向是一个重要的概念,尤其在半导体工业中。这个概念涉及到晶体在生长过程中原子排列的方向,对晶体的性质和应用有重大影响。让我为您详细解释:理解Si晶体的生长方向对于半导体材料的研究和应用非常重要,它直接影响了最终器件的性能和制造工艺。在实际应用中,选择适当的生长方向可以优化器件性能,提高产品质量。

m0_37606066的博客 2989

1.2 机器人控制系统软硬件平台

工业机器人的软硬件平台架构是影响工业机器人性能和效率的重要因素。良好的软硬件平台架构可以帮助工业机器人更加稳定和高效地完成工作,提高生产效率。正确的软硬件配置还可以提高工业机器人的灵活性和可靠性,使其能够更好地适应不断变化的生产环境。 同时,工业机器人的软硬件平台架构还可以影响工业机器人的安全性和维护成本。如果软硬件平台架构不合适,工业机器人可能出现故障或安全隐患,需要大量的维护和维修费用。因此,选择适当的软硬件平台架构对于确保工业机器人的高效运行和长期使用是非常重要的。

Galaxy_Robot的博客 2万+

【JavaWeb】数据库连接池和JDBC封装工具DBUtils

Test/*** 手动设置参数的方式:*/try{// 获得连接:从连接池中获取:// 创建连接池:// 设置连接参数:// 从连接池中获得连接:// 编写SQL:// 预编译SQL:// 执行SQL:}}}因为JDBC手写比较麻烦,而且有非常多的代码是类似的。比如获得连接,预编译SQL,释放资源等..那么可以将这些代码抽取出来放到工具类中。将类似的代码进行抽取。大大简化JDBC的编程。

wang_qiu_hao的博客 1031

AD22里面封装修改后,同步到PCB图里面

【摘要】本文介绍了Altium Designer 22中同步更新元件封装的三种方法:1)从PCB库直接更新:在PCB库面板右键选择"Update PCB With[封装名]";2)通过原理图标准更新:使用Design->Update PCB Document菜单;3)在PCB编辑器中验证更新:通过Tools->Update From PCB Libraries菜单。所有方法最终都需通过ECO(工程变更订单)确认变更,建议执行前仔细核对变更内容。这些方法适用于AD22及早期版本

whm128的博客 1758

JAVA中自己封装JDBC工具类

零、码仙励志 朋友和我说:人都是逼出来的。我经过深思熟虑,觉得很有道理。 一、前期准备 首先创建一个Dynamic Web Project 工程 jdbc ,接着创建俩个包和一个文件db.properties,然后导入MySQL驱动类。 新建工程和导入驱动我这里就不介绍了,不会的看下面这篇文章 JAVA中的JDBD(MYSQL) 下面是我的工程截图,可以按照我的来 二、创...

秦哥的博客 4459

【100%通过率】华为od统一考试B卷【贪吃蛇】Python 实现

贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。 下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == ‘H’,表示该方格为贪吃蛇的起始位置;若arr[i][j] == ‘F’,表示该方格为食物,若arr[i][j] == ‘E’,表示该方格为空格。贪吃蛇初始长度为1,初始移动方向为向左。

MISAYAONE的博客 1202

YOLOv11改进 | 引入DEConv细节增强卷积模块:恢复细节信息,提升小目标检测精度

摘要: YOLOv11在目标检测中面临小目标检测精度不足的问题,主要由于细节信息丢失。本文提出引入DEConv(细节增强卷积)模块,通过多分支卷积和残差连接恢复高频细节,提升小目标检测性能。DEConv结合3×3卷积与空洞卷积增强边缘信息,并自适应融合特征,兼容YOLOv11的P3层(小目标关键层)且计算高效。实验表明,该改进在无人机航拍、显微镜图像等密集小目标场景中显著减少漏检,同时保持轻量化和实时性优势。代码实现可直接嵌入现有YOLO架构,仅需替换P3层卷积模块。

走向CTO的路上... 948

javaweb项目用JDBC连接mysql数据库

文章目录一、需求二、项目结构三、步骤1、创建数据库、数据表,插入数据2、创建javaweb项目3、下载驱动包4、导入驱动包5、创建包,创建类6、程序7、运行结果 一、需求 创建一个javaweb项目,读取bookinfo表中的数据,并输出到控制台 二、项目结构 JDBC.java用来写主程序 mysql-connector-java-5.1.47.jar是java连接mysql需要导入的jar包...

龟的小号的博客 6万+

华为OD机试 新系统真题-收集灵草(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【收集灵草】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【收集灵草】多语言题解。

qq_45776114的博客 544

JavaWeb中Servlet+jsp+JDBC完成登录注册界面

例如:学习javaweb过程笔记,在项目中扎实基础。该项目由Servlet+jsp+JDBC等技术组成。

qq_59102256的博客 6800

天猫精灵设备拆机及系统分析

我手头的这个天猫精灵型号为TG_X1,黑色天猫精灵AI助手,拆解没有多少难度,但需要注意连接线的问题。具体的拆机过程可以参见:http://www.geekifix.com/wp/archives/415.html注意一点就是,天猫精灵的主板的位置,位于音频按键的底部,也就是顶端,而拆解是从电源的位置从低到顶进行拆机;拆机后,看到主控板的信息如下:主控型号:联发科 MT8516MT8516支持四核...

LeeKwen的专栏 3万+

《MySQL 入门教程》第 03 篇 管理数据库

本篇主要介绍 MySQL 数据库的创建、查看、选择和删除操作,包括使用 mysql 命令行和 MySQL Workbench 图形工具两种方式。

Tony.Dong的专栏 3520

JavaWeb:用JDBC操作数据库

JDBC系列阅读 JavaWeb:用JDBC操作数据库 JavaWeb:JDBC之事务 JavaWeb:JDBC之数据库连接池 1. 什么是JDBCJDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作。说白

JackChan 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【JavaWeb】JDBC:基本操作及封装DBUtil

1.连接 -> 关闭 DriverMange -> Connection -> Statement Statement 一个statement执行一条sql 一个Connection可以get多个statement PreparedStatement是经过预编译的Statement,更高效 // 1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取连接对象,Connection Connection conn = Driv

A minor 2188

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JavaWeb基础2——JDBC

JDBC概述、步骤、获取数据库连接的各种方式、驱动管理类 DriverManager、数据库连接对象Connection、Statement、PreparedStatement、数据库连接池DataSource、 Driud使用、练习

种一棵树最好的时间是十年前,其次是现在 5386

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

javaWeb基础之JDBC工具类

课程笔记Day29 JDBC快速入门 JDBC相关API SQL注入问题 JDBC工具类 第一章 JDBC快速入门 第01节 基础理论 1、JDBC介绍 2、JDBC步骤 操作步骤 1. 导入jar包 2. 找到驱动 Driver 3. 获取连接 Connection 4. 获取操作 Statement 5. 查询结果 ResultSet 6. 释放资源 第02节 案例代码 1、准备数据 -- 1. 创建数据库 DROP DATABASE IF EXISTS mydb08;

阳光宅男的博客 571

jdbc连接mysql工具类_jdbc之工具类DBUtil的使用

首先回顾一下jdbc的使用方法:1. 注册驱动2. 建立连接3. 建立statement4. 定义sql语句5. 执行sql语句,如果执行的是查询需遍历结果集6. 关闭连接其中建立连接和关闭连接都是可以封装成工具类的,因此给出DBUtil代码如下:package com.colin.util;import java.sql.*;public class DBUtil {private static...

weixin_34917038的博客 982

【JavaWeb】封装JDBC连接操作数据库:(pfive_jdbcdbutil)

【JavaWeb】封装JDBC连接操作数据库: 补充:JDBC增删改查数据库(点击可跳转) 数据库: 自行建库建表 后端: 新建项目模块 选择模块,添加依赖 创建配置文件: db.properties Java类 前端: Web添加 创建html文件 创建Artifacts 创建配置Tomcat服务器: 添加Artifacts 运行Tomcat服务器

The more you work,the luckier you will be. 1720

javaWeb:jdbc都操作CRUD,jdbc工具类

javaWeb:jdbc都操作1.CRUD是什么?2.jdbc的CRUD之保存:3.jdbc的CRUD之修改:4.删除:编写sql语句5.查询多条记录或一条记录:6.jdbc工具类:抽取: 1.CRUD是什么? 是对jdbc的操作:jdbc的增删改查 2.jdbc的CRUD之保存: String sql = “insert into user values(‘4’,‘我是’,777)”;//插入语句 String sql = “insert into user values(‘4’,5,777)”; 对应了

qq_51813155的博客 366

【javaweb】javaweb3之JDBC

javaweb3之jdbc

2301_79585673的博客 809

零基础入门JAVAweb——JDBC的封装篇

🧑作者简介 📮首页:​​​​​​小罗のdiary的博客_优快云博客-单片机原理,java基本常识领域博主 🕴职业:👨‍🎓在校大学生 😍爱好:📝写博客,🎧听歌,🔌学习单片机,💻java,🏃跑步 🏆擅长:单片机的基本原理,java基本原理 🎉🎉欢迎来首页阅读我的博客🎉🎉 📖主要内容 💦💦💦💦💦💦💦💦💦💦💦 💦💦相较于未封装的JDBC,封装之后💦💦 💦💦的JDBC有什么优点,学会封装JD💦💦 💦💦BC的步骤和使用封装之后的SqlM💦💦 💦💦💦💦💦💦anager类💦💦💦💦💦💦 💦💦💦

m0_57209839的博客 1464

【JavaWeb】JDBC工具类实现登录功能

我们使用JDBC实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了。下面以实现登录功能的案例来介绍。 创建数据库,插入数据 use student; create table user( id int primary key auto_increment, username varchar(32), password varchar(32) ); insert into user values(null,'zhan.

360°顺滑 1282
上一篇: 【JavaWeb】1.jdbc的操作步骤
下一篇: 【JavaWeb】03-使用apache的commons-dbutils操作数据库
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值