Javaweb数据库通用查询BaseDao

连接数据库工具类:DBUtil.java

package util;import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;/** @param null:* jdbc连接工具类* @return null* @author liu* @description TODO* @date 2024/5/25 17:05*/
public class DBUtil {private static Connection con;private static final String driver;private static String url;private static String username;private static String password;static{// 读取数据库连接配置文件  反射机制加载类下资源InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");Properties properties = new Properties();try {// 加载输入流文件内容properties.load(is);driver = properties.getProperty("driver");url = properties.getProperty("url");username = properties.getProperty("username");password =  properties.getProperty("password");Class.forName(driver);} catch (IOException | ClassNotFoundException e) {throw new RuntimeException(e);}}// 连接方法public static Connection getConnection(){try {if(con == null || con.isClosed()){con =  DriverManager.getConnection(url,username,password);System.out.println(con+"数据库连接成功");}} catch (SQLException e) {throw new RuntimeException(e);}return con;}/*** 释放资源* @param rs    结果集对象* @param pre   预处理对象* @param conn  连接数据库对象*/public static void close(ResultSet rs, PreparedStatement pre, Connection conn){try {if (rs != null){rs.close();}if (pre != null){pre.close();}if (conn != null){conn.close();}System.out.println("资源已全部释放");} catch (SQLException e) {throw new RuntimeException(e);}}}

通用查询接口:BaseDao.java

package dao;import pojo.User;import java.util.List;// 定义基本的增、删、改、查
public interface BaseDao {/** @param String sql,Object args:* 执行通用的增、删、改 功能* @return row      受影响的行数*/int executeUpdate(String sql, Object... args);/** @param String sql:*  查询表中所有数据并保存到集合中*/List<User> executeSelect(String sql,Object... args);
}

通用查询接口实现类

package dao.impl;import dao.BaseDao;
import pojo.User;
import util.DBUtil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;// 定义基本的增、删、改、查
public class BaseDaoImpl implements BaseDao {private static Connection con = null;private static PreparedStatement ptmt = null;private static ResultSet rs = null;/** @param String sql,Objectargs:* 执行通用的增、删、改 功能* @return row      受影响的行数* @author liu* @description TODO* @date 2024/5/25 18:13*/@Overridepublic int executeUpdate(String sql, Object... args){int row = 0;con = DBUtil.getConnection();try {// 开启事务con.setAutoCommit(false);// 预编译ptmt = con.prepareStatement(sql);for (int i = 0; i < args.length; i++) {ptmt.setObject(i+1,args[i]);}row = ptmt.executeUpdate();if(row > 0){// 提交事务con.commit();}else{// 回滚事务con.rollback();}System.out.println("受影响的行数为:"+row);} catch (SQLException e) {// 发生异常,回滚事务try {con.rollback();} catch (SQLException ex) {throw new RuntimeException(ex);}throw new RuntimeException(e);}finally {// 释放资源DBUtil.close(rs,ptmt,con);}return row;}/** @param String sql:*  查询表中所有数据并保存到集合中* @return List* @author liu* @description TODO* @date 2024/5/25 18:24*/@Overridepublic List<User> executeSelect(String sql,Object... args){System.out.println("===查询操作===");con = DBUtil.getConnection();List users = new ArrayList();try {ptmt = con.prepareStatement(sql);for (int i = 0; i < args.length; i++) {ptmt.setObject(i+1,args[i]);}rs = ptmt.executeQuery();while (rs.next()) {int id = rs.getInt(1);String username = rs.getString(2);String password = rs.getString(3);User user = new User(id,username,password);users.add(user);}} catch (SQLException e) {throw new RuntimeException(e);}finally {// 释放资源DBUtil.close(rs,ptmt,con);}return users;}}

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

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

相关文章

flinkcdc 3.0 源码学习之客户端flink-cdc-cli模块

注意 : 本文章是基于flinkcdc 3.0 版本写的 我们在前面的文章已经提到过,flinkcdc3.0版本分为4层,API接口层,Connect链接层,Composer同步任务构建层,Runtime运行时层,这篇文章会对API接口层进行一个探索.探索一下flink-cdc-cli模块,看看是如何将一个yaml配置文件转换成一个任务…

电子画册制作技巧,从零基础到专业人士

电子画册作为一种新兴的视觉传达形式&#xff0c;正越来越受到大众的喜爱。从设计新手到专业人士&#xff0c;如何快速掌握电子画册的制作技巧&#xff0c;提升自己的创作水平呢&#xff1f; 一、明确设计目的和定位 制作电子画册前&#xff0c;首先要明确其设计目的和定位。画…

数字营销:以大数据作引擎,推动企业全面数字化升级

数字营销本质乃是以大数据为核之心&#xff0c;促使营销活动高效运作&#xff0c;消费者线上线下数据的无缝衔接、企业内外部数据的贯通、公域引流私域运营等&#xff0c;皆已成为企业运营的标准配置。 数据即等同于市场&#xff0c;市场即等同于用户&#xff0c;用户乃是企…

回溯算法之简单组合

哦吼&#xff01;今天结束了二叉树&#xff0c;开始回溯算法 其实也需要用到迭代&#xff0c;哈哈哈哈&#xff0c;但是这个暴力穷举真的好爽。 先记一下回溯算法的基本框架吧 老规矩&#xff1a; 还是有结束条件 但是后面就不太一样了 这里就是for循环&#xff0c;循环n…

理解 gRPC 和 tRPC 的区别:简单入门

gRPC 和 tRPC 的区别 在现代分布式系统和微服务架构中&#xff0c;服务间的通信至关重要。API 技术栈的选择直接影响到系统的性能、可维护性和开发效率。gRPC 和 tRPC 是两种备受关注的 RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;各有其独特的特性和适用场景。…

springMVC,springboot整合jasypt

生成加密串 public class Encryptor { public static void main(String[] args) { BasicTextEncryptor textEncryptor new BasicTextEncryptor(); textEncryptor.setPassword("mysalt");//自定义加密盐 String myEncryptedPassword t…

Windows下mingw32编译ffmpeg5.1.4实现rtsp拉流

由于客户要求&#xff0c;要在Windows下使用mingw32编译&#xff0c;去ffmpeg.org下载需要编译的版本&#xff0c;使用msys2方法进行编译&#xff0c;使用QT5.10的编译器&#xff0c;基本上把网上的方法试了个遍&#xff0c;编译全部库总是报错出问题 查看了ffbuild文件夹中con…

爬虫之re数据清洗

文章目录 一、正则【Regular】二、重要语法1、获取内容: 左边(.*?)右边2、替换数据: re.sub(源数据|源数据, 目标数据, 字符串) 一、正则【Regular】 概念: 根据程序员的指示, 从<字符串>中提取数据 结果: 列表 使用频率: 正则跟xpath相比, 正则是弟弟 二、重要语法 …

SvelteKit:构建高性能SSR应用的新框架

SvelteKit 是基于 Svelte 的下一代框架&#xff0c;用于构建服务器端渲染&#xff08;SSR&#xff09;和静态站点生成&#xff08;SSG&#xff09;的应用。Svelte 是一个轻量级的前端框架&#xff0c;以其极高的性能和简洁的代码著称。SvelteKit 扩展了 Svelte 的能力&#xff…

【Maven】Maven主要知识点目录整理

1. Maven的基本概念 作者相关文章链接&#xff1a; 1、【Maven】简介_下载安装-CSDN博客 定义&#xff1a;Maven是Apache的一个开源项目&#xff0c;是Java开发环境中用于管理和构建项目&#xff0c;以及维护依赖关系的强大软件项目管理工具。作用&#xff1a;简化了项目依赖…

文件夹类型异常成文件:原因解析与恢复策略

在数字时代&#xff0c;数据的安全与完整性对于个人和企业都至关重要。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况&#xff1a;原本应该是文件夹的图标&#xff0c;却突然变成了文件的图标&#xff0c;这就是所谓的“文件夹类型成文件”问题。本文将深入探讨这一现…

Swagger测试接口,请求头添加token

概述Swagger 1、概述 在日常开发中&#xff0c;我们的业务需要用户登录&#xff0c;权限控制。但是在某些情况下我们使用Swagger测试接口&#xff0c;部分接口需要携带token&#xff0c;才能访问&#xff0c;就需要在swagger添加token窗口。 效果图&#xff1a; 由 右上角 A…

如何判断一个对象是否已经被回收?

在Java中&#xff0c;无法直接判断一个对象是否已经被垃圾回收&#xff08;GC&#xff09;。Java的设计理念是让垃圾回收机制完全由JVM管理&#xff0c;程序员不应该也不能直接干预或查询垃圾回收的状态。然而&#xff0c;有一种间接的方法可以帮助我们了解对象是否已被回收&am…

数据库查询以及修改方法 aspx ashx

main.aspx页面 <% Page Language"C#" AutoEventWireup"true" %> <% Import Namespace"MysqlHelpers" %> <!DOCTYPE html> <script runat"server"> public string RecId, userid, LOGIN, Token, ORG_…

Python计算回归拟合各项指标

0、各项回归指标简介 Relative Root Mean Squared Error&#xff08;RRMSE&#xff09;&#xff1a;The RRMSE normalizes the Root Mean Squared Error (RMSE) by the mean of observations. It goes from 0 to infinity. The lower the better the prediction performance.T…

一千题,No.0031(A除以B)

本题要求计算 A/B&#xff0c;其中 A 是不超过 1000 位的正整数&#xff0c;B 是 1 位正整数。你需要输出商数 Q 和余数 R&#xff0c;使得 ABQR 成立。 输入格式&#xff1a; 输入在一行中依次给出 A 和 B&#xff0c;中间以 1 空格分隔。 输出格式&#xff1a; 在一行中依…

衍生品赛道的 UniSwap:SynFutures 或将成为行业领军者

经过一个周期的发展&#xff0c;DeFi 已经成为基于区块链构建的最成功的去中心化应用&#xff0c;并彻底改变了加密市场的格局。加密货币交易开始逐步从链下转移到链上&#xff0c;并从最初简单的 Swap 到涵盖借贷、Staking、衍生品交易等广泛的生态系统。 在 DeFi 领域&#x…

小红书图片生成

先找一找有没有直接生成小红书图片的项目。这个项目和图片生成项目还是有一点区别的,小红书的图片不仅关注图片上的商品,可能一篇文章中,有商品的图片可能就一张,更多还是带有文字的图片,那么就是对文字进行替换,目前的图片生成,很少有这块的能力。1.目前的图像生成在电…

从普通神经网络到transformer

1.单隐藏层的多层感知机 2. 循环神经网络 3.现代循环神经网络。 GRU 门控循环单元 LSTM 长短期记忆网络 候选记忆元&#xff1a; ˜C t ∈ R &#xff08;nh&#xff09; 记忆元