jdbc工具类
jdbc 工具类,具体见下面代码,直接可以用。
/*** @version 1.0* @descpription: jdbc工具类* @date 2024/4/6*/
public class JDBCUtils {private static final String URL = "jdbc:mysql://127.0.0.1:3306/mybatis";private static final String USER = "root";private static final String PASSWORD = "root";private static final String DRIVER = "com.mysql.cj.jdbc.Driver";/*** 批量插入的最大数量*/private static final int BATCH_SIZE = 2;private static final String INSERT_SQL = "INSERT INTO user (name, age) VALUES (?, ?)";private static final String UPDATE_SQL = "UPDATE user SET name=?, age=? WHERE id=?";private static final String DELETE_SQL = "DELETE FROM user WHERE id=?";public static final String SELECT_SQL = "SELECT * FROM user WHERE id=?";/*** 获取数据库连接* @return* @throws Exception*/public static Connection getConnection() throws Exception {//注册驱动Class.forName(DRIVER);return DriverManager.getConnection(URL, USER, PASSWORD);}/*** 关闭数据库连接* @param connection*/public static void closeConnection(Connection connection) {try {if (connection != null) {connection.close();}} catch (SQLException e) {throw new RuntimeException(e);}}/*** 关闭closeResultSet* @param resultSet*/public static void closeResultSet(ResultSet resultSet) {try {if (resultSet != null) {resultSet.close();}} catch (SQLException e) {throw new RuntimeException(e);}}/*** 关闭PreparedStatement* @param preparedStatement*/public static void closeStatement(PreparedStatement preparedStatement){try {if (preparedStatement != null) {preparedStatement.close();}} catch (SQLException e) {throw new RuntimeException(e);}}/*** 新增* @param paramMap*/public static void insert(Map<String,Object> paramMap){Connection connection = null;PreparedStatement preparedStatement = null;try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement(INSERT_SQL);preparedStatement.setString(1, (String) paramMap.get("name"));preparedStatement.setInt(2, paramMap.get("age") == null ? 0 : (int) paramMap.get("age"));preparedStatement.executeUpdate();} catch (Exception e) {throw new RuntimeException(e);}finally {JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);}}/*** 批量新增* @param paramMapList* @param size*/public static void batchInsert(List<Map<String,Object>> paramMapList,int size){// 批量插入Connection connection = null;PreparedStatement preparedStatement = null;long start = System.currentTimeMillis();try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement(INSERT_SQL);//设置手动提交,关闭自动提交connection.setAutoCommit(false);for (int i = 1; i <= size; i++) {Map<String, Object> paramMap = paramMapList.get(i-1);preparedStatement.setString(1, (String) paramMap.get("name"));preparedStatement.setInt(2, paramMap.get("age") == null ? 0 : (int) paramMap.get("age"));// 添加到批处理中preparedStatement.addBatch();if (i % BATCH_SIZE == 0) {// 执行批处理preparedStatement.executeBatch();// 提交事务connection.commit();// 清空批处理preparedStatement.clearBatch();}}} catch (Exception e) {throw new RuntimeException(e);} finally {JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);long end = System.currentTimeMillis() - start;System.out.println(end);}}/*** 删除* @param paramMap*/public static void delete(Map<String,Object> paramMap){Connection connection = null;PreparedStatement preparedStatement = null;try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement(DELETE_SQL);preparedStatement.setInt(1, (int) paramMap.get("id"));preparedStatement.executeUpdate();}catch (Exception e){throw new RuntimeException(e);}finally {JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);}}/*** 更新* @param paramMap*/public static void update(Map<String,Object> paramMap){Connection connection = null;PreparedStatement preparedStatement = null;try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement(UPDATE_SQL);preparedStatement.setString(1, (String) paramMap.get("name"));preparedStatement.setInt(2, paramMap.get("age") == null ? 0 : (int) paramMap.get("age"));preparedStatement.setInt(3, (int) paramMap.get("id"));preparedStatement.executeUpdate();}catch (Exception e){throw new RuntimeException(e);}finally {JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);}}/*** 根据id查询* @param paramMap*/public static void selectById(Map<String,Object> paramMap) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement(SELECT_SQL);preparedStatement.setInt(1, (int) paramMap.get("id"));resultSet = preparedStatement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");System.out.println(id + " " + name + " " + age);}}catch (Exception e){throw new RuntimeException(e);} finally {// 关闭资源JDBCUtils.closeResultSet(resultSet);JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);}}/*** 查询所有*/public static void selectAll(){Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {connection = JDBCUtils.getConnection();preparedStatement = connection.prepareStatement("SELECT * FROM user ");resultSet = preparedStatement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");System.out.println(id + " " + name + " " + age);}}catch (Exception e){throw new RuntimeException(e);} finally {// 关闭资源JDBCUtils.closeResultSet(resultSet);JDBCUtils.closeConnection(connection);JDBCUtils.closeStatement(preparedStatement);}}
}
/*** @descpription:* @date 2024/4/2*/
public class JdbcTest {public static void main(String[] args) throws ClassNotFoundException{
// insertTest();
// updateTest();
// deleteTest();batchInsertTest();}public static void batchInsertTest(){List<Map<String,Object>> paramMapList = new ArrayList<>();Map<String,Object> paramMap = new HashMap<>();paramMap.put("name","姜科");paramMap.put("age",18);Map<String,Object> paramMap2 = new HashMap<>();paramMap2.put("name","老朱");paramMap2.put("age",20);paramMapList.add(paramMap);paramMapList.add(paramMap2);JDBCUtils.batchInsert(paramMapList,2);JDBCUtils.selectAll();}public static void insertTest(){Map<String,Object> paramMap = new HashMap<>();paramMap.put("name","测试");paramMap.put("age",18);JDBCUtils.insert(paramMap);JDBCUtils.selectAll();}public static void updateTest(){Map<String,Object> paramMap = new HashMap<>();paramMap.put("name","zhangtao");paramMap.put("age",100);paramMap.put("id",1);JDBCUtils.update(paramMap);JDBCUtils.selectAll();}public static void deleteTest(){Map<String,Object> paramMap = new HashMap<>();paramMap.put("id",9999004);JDBCUtils.delete(paramMap);JDBCUtils.selectAll();}
}

相关文章:
jdbc工具类
jdbc 工具类,具体见下面代码,直接可以用。 /*** version 1.0* descpription: jdbc工具类* date 2024/4/6*/ public class JDBCUtils {private static final String URL "jdbc:mysql://127.0.0.1:3306/mybatis";private static final String …...
Svelte Web 框架介绍
Svelte 是一个用于构建网络应用程序的现代框架,它与其他用户界面框架(如React和Vue)有着本质的不同。Svelte 的核心理念是在构建应用程序时,将大部分工作转移到编译步骤中,而不是在用户的浏览器中运行时处理。这种方法…...
IP地址获取不到的原因是什么?
在数字化时代的今天,互联网已成为我们日常生活和工作中不可或缺的一部分。而IP地址,作为互联网通信的基础,其重要性不言而喻。然而,有时我们可能会遇到IP地址获取不到的问题,这会给我们的网络使用带来诸多不便。那么&a…...
Android APP加固利器:深入了解混淆算法与混淆配置
Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解ÿ…...
蓝桥杯真题Day47 倒计时6天:6道真题+回溯递归问题
[蓝桥杯 2019 省 A] 糖果 题目描述 糖果店的老板一共有M种口味的糖果出售。为了方便描述,我们将M 种口味编号 1∼ M。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是K 颗一包整包出售。 幸好糖果包装上注明了其中 K 颗糖果的口味…...
通过UDP实现参数配置
来讲讲UDP的一种常见应用 我们知道UDP是一种无连接的网络传输协议,在发送数据时指定目标IP及端口就可以将数据发送出去,因此特别适合用作网络设备发现。 我们可以自定义一个通信端口,假设为55555。我们再制定一个协议用于查询目标设备&#x…...
解析Apache Kafka:在大数据体系中的基本概念和核心组件
关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章:深度剖析:计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章&a…...
独角数卡对接码支付收款教程
1、到码支付后台找到支付配置。2、将上面的复制依次填入,具体看下图,随后点立即添加 商户ID商户PID 商户KEY异步不能为空 商户密钥商户密钥...
vuepress-theme-hope 添加谷歌统计代码
最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…...
LabVIEW太赫兹波扫描成像系统
LabVIEW太赫兹波扫描成像系统 随着科技的不断发展,太赫兹波成像技术因其非电离性、高穿透性和高分辨率等特点,在生物医学、材料质量无损检测以及公共安全等领域得到了广泛的应用。然而,在实际操作中,封闭性较高的信号采集软件限制…...
什么是stable diffusion?
🌟 Stable Diffusion:一种深度学习文本到图像生成模型 🌟 Stable Diffusion是2022年发布的深度学习文本到图像生成模型,主要用于根据文本的描述产生详细图像。它还可以应用于其他任务,如内补绘制、外补绘制࿰…...
KeyguardClockSwitch的父类
KeyguardClockSwitch 定义在KeyguardStatusView中, mClockView findViewById(R.id.keyguard_clock_container);KeyguardClockSwitch的父类为: Class Name: LinearLayout Class Name: KeyguardStatusView Class Name: NotificationPanelView Class Name: Notificat…...
Gradle系列(二):Groovy基础
Gradle系列(二):Groovy基础 本篇文章继续讲下Groovy一些基础的语法。 1:Map map与List的用法很像,只不过值是一个K:V的键值对。 下面是是Groovy中Map的定义: task testMap { def map [‘width’:1280,‘height’:1960] prin…...
PW1503限流芯片:可达3A限流,保障USB电源管理安全高效
在电源管理领域,开关的性能直接关系到设备的稳定性和安全性。今天,我们将详细解析一款备受关注的超低RDS(ON)开关——PW1503。它不仅具有可编程的电流限制功能,还集成了多项保护机制,为各类电子设备提供了高…...
深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能
苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch,如今的Find My已经不单单可以查找苹果的设备,随着第三方设备的加入,将丰富Find My Network的版图。产…...
Web3 革命:揭示区块链技术的全新应用
随着数字化时代的不断发展,区块链技术作为一项颠覆性的创新正在改变着我们的世界。而在这一技术的进步中,Web3正逐渐崭露头角,为区块链技术的应用带来了全新的可能性。本文将探讨Web3革命所揭示的区块链技术全新应用,并展望其未来…...
[实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?
在MyBatis框架中,传入参数使用#{para}和#{para, jdbcTypeBIGINT}的有什么区别呢? #{para}:这种写法表示使用MyBatis自动推断参数类型,并根据参数的Java类型自动匹配数据库对应的类型。例如,如果参数para的Java类型是Lo…...
高并发下的linux优化
针对高并发服务,对 Linux 内核和网络进行优化可以提高系统的性能和稳定性。本文将深入探讨如何对 Linux 内核和网络进行优化,包括调整内核参数、调整网络性能参数、使用 TCP/IP 协议栈加速技术、下面将介绍一些可用于优化Linux内核和网络的技术ÿ…...
不同设备使用同一个Git账号
想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法, 依次输入 git config user.name git config user.email第2种方法, 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…...
蓝桥杯算法题:区间移位
题目描述 数轴上有n个闭区间:D1,...,Dn。 其中区间Di用一对整数[ai, bi]来描述,满足ai < bi。 已知这些区间的长度之和至少有10000。 所以,通过适当的移动这些区间,你总可以使得他们的“并”覆盖[0, 10000]——也就是说[0, 100…...
为什么AI时代需要Lightpanda这样的无头浏览器?揭秘9倍内存效率背后的技术革命
为什么AI时代需要Lightpanda这样的无头浏览器?揭秘9倍内存效率背后的技术革命 【免费下载链接】browser The open-source browser made for headless usage 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser 在当今AI代理、自动化测试和大规…...
Oracle季度安全补丁(CPU)全解析:如何高效管理企业数据库漏洞
Oracle季度安全补丁管理实战指南:从漏洞评估到自动化部署 1. Oracle CPU机制深度解析 Oracle Critical Patch Update(CPU)作为数据库安全防护体系的核心机制,其运作逻辑远比简单的补丁合集复杂得多。每季度发布的CPU实际上是一个经…...
3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南
3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南 【免费下载链接】Automate-Sketch Make your workflow more efficient. 项目地址: https://gitcode.com/gh_mirrors/au/Automate-Sketch 在当今快节奏的设计工作中,效率就是竞争力。…...
Ubuntu 20.04 安装 CUDA 和 cuDNN 避坑指南:从驱动卸载到环境配置全流程
Ubuntu 20.04 深度学习环境配置全攻略:CUDA与cuDNN安装避坑指南 在深度学习领域,GPU加速已成为模型训练的标准配置。对于使用Ubuntu系统的开发者而言,正确安装NVIDIA的CUDA和cuDNN工具包是搭建高效开发环境的第一步。本文将带你从零开始&…...
OpenClaw对接Qwen3-32B-Chat私有镜像:5步完成本地AI助手部署
OpenClaw对接Qwen3-32B-Chat私有镜像:5步完成本地AI助手部署 1. 为什么选择OpenClawQwen3-32B-Chat组合? 上周我在整理历年积累的技术文档时,面对散落在十几个文件夹里的2000多份PDF和Markdown文件,突然意识到手动分类已经不可能…...
Windows Defender禁用技术深度解析:通过WSC API实现安全控制
Windows Defender禁用技术深度解析:通过WSC API实现安全控制 【免费下载链接】no-defender A slightly more fun way to disable windows defender. (through the WSC api) 项目地址: https://gitcode.com/GitHub_Trending/no/no-defender Windows Defender作…...
计算机毕业设计269—基于python+深度学习+YOLOV8的交通标志识别系统(源代码+数据库+报告)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于python深度学习YOLOV8的交通标志识别系统(源代码数据库报告)269 一、系统介绍 1、用户: 在界面中选择各种图片,可以是自己在路边拍摄的图片࿰…...
Luma3DS从源码编译终极指南:开发者环境搭建和完整构建流程详解
Luma3DS从源码编译终极指南:开发者环境搭建和完整构建流程详解 【免费下载链接】Luma3DS Noob-proof (N)3DS "Custom Firmware" 项目地址: https://gitcode.com/gh_mirrors/lu/Luma3DS Luma3DS是Nintendo 3DS家族设备的"傻瓜式"自定义固…...
Pixel Dream Workshop效果实测:不同VAE tiling尺寸对1024x1024像素画渲染耗时影响
Pixel Dream Workshop效果实测:不同VAE tiling尺寸对1024x1024像素画渲染耗时影响 1. 测试背景与目标 Pixel Dream Workshop作为新一代像素艺术生成工具,其核心优势在于能够高效生成高分辨率像素艺术作品。在实际使用中,我们发现VAE tiling…...
RK3568 Android12红外遥控唤醒失效?手把手教你排查DTS配置问题
RK3568 Android12红外遥控唤醒失效?深度解析DTS配置与硬件唤醒机制 红外遥控唤醒功能在智能家居、机顶盒等嵌入式设备中属于基础需求,但实际开发中常遇到待机后无法唤醒的问题。本文将基于RK3568平台和Android12系统,从硬件原理到DTS配置&…...
