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();
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

InnoDB中的索引方案

文章目录 InnoDB中的索引方案 InnoDB支持多种类型的索引&#xff0c;包括B-tree索引、全文索引、哈希索引等。B-tree索引是InnoDB存储引擎的默认索引类型&#xff0c;适用于所有的数据类型&#xff0c;包括字符串、数字和日期等。 以下是创建InnoDB表及其B-tree索引的示例代码…

用一个程序解决SQLite常见的各项操作(实用篇)

文章说明&#xff1a; 本篇文章是在之前的一篇文章SQLite3进行数据库各项常用操作基础上写的&#xff0c;将SQLite涉及到的常用的几种操作&#xff0c;以函数的形式处理成相互调用的形式。 因为之前的文章对基础操作已经解释过了&#xff0c;所以这里直接放置可执行代码和结果…

Upload file to cloud server

Procedure is trifle&#xff0c;concentrate on current affair. Via js step1: book a website Official guidebook https://support.huaweicloud.com/usermanual-cloudsite/cloudsite_01_4140.html 流程如下: 为什么这么难&#xff0c;死活不知道怎么备案 /(ㄒoㄒ)/~~

Linux:数据链路层

文章目录 路由表数据链路层分片mac帧报头ARP协议ARP的周边话题 路由表 当主机a想要发送消息到主机b&#xff0c;这一整个过程中&#xff0c;数据报文在进行传输的过程实际上是一跳一跳的过去的&#xff0c;而报文可能会经过公网进行传递&#xff0c;本质上这些网络都是靠对应的…

使用vue开发的前后台框架推荐

对于Vue后台前台框架&#xff0c;以下是几个值得推荐的选项&#xff1a; Element UI&#xff1a;一个基于Vue.js的桌面端组件库&#xff0c;提供了丰富的UI组件和交互方式&#xff0c;非常适合构建后台管理系统。 Element UI是一套为开发者、设计师和产品经理准备的基于Vue 2.…

【计算机毕业设计】五台山景点购票系统,后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

LeetCode-热题100:118. 杨辉三角

题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]…

什么是SYN攻击,有什么办法防御SYN攻击

自进入数字化互联网时代&#xff0c;网络技术给我们带来了许多服务&#xff0c;为人们的生活增添了许多便利。但同时&#xff0c;网络安全问题也日益凸显&#xff0c;其中DDoS攻击&#xff0c;即分布式拒绝服务攻击&#xff0c;已经成为一种常见的网络威胁。这种攻击方式通过控…

anaconda虚拟环境安装apex0.1教程win10

我安装apex0.1的环境是&#xff1a;torch&#xff08;gpu&#xff09;1.8.0&#xff0c;cuda10.2&#xff0c;cuda7.6.5。 第一步&#xff1a;下载对应的pytorch、cuda、cudnn版本 这里就不详细介绍了&#xff0c;具体可以参考我的这篇博文win10中anaconda创建虚拟环境配置py…

「 典型安全漏洞系列 」10.跨域资源共享CORS漏洞详解

跨域资源共享&#xff08;Cross-origin Resource Sharing&#xff0c;CORS&#xff09;是一种浏览器机制&#xff0c;可以对于给定域之外的资源进行受控访问。它扩展并增加了同源政策&#xff08;Same-origin Policy&#xff0c;SOP&#xff09;的灵活性。然而&#xff0c;如果…

知识融合与消歧:完善知识图谱的关键步骤

知识融合与消歧&#xff1a;完善知识图谱的关键步骤 一、引言&#xff1a;知识融合与消歧的重要性 在今天的数据驱动时代&#xff0c;知识图谱已成为组织和理解海量信息的关键技术。它们使得复杂的数据关系可视化&#xff0c;为人工智能提供了丰富的知识基础。然而&#xff0c…

Qt | 元对象系统

一、QByteArray 类简介 1、QByteArray 类简介  该类是一个用于处理字符串的类似于 C++的 string 类型的类,在 Qt 中,对字符串的处理,经常使用的是 QString 类,该类保证字符串以\0结尾,并使用隐式共享(copy-on-write)来减少内存用量和不必要的数据复制。  QByteArra…

【智能算法】原子搜索算法(ASO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2019年&#xff0c;Zhao等人受到原子运动规律启发&#xff0c;提出了原子搜索算法&#xff08;Atom Search Algorithm&#xff0c;ASO&#xff09;。 2.算法原理 2.1算法思想 ASO根据分子动力学中…

Qt学习记录(C++)——Day 2

目录 一、作业 要求&#xff1a; 实现&#xff1a; 1.创建新的窗口类 2. 主窗口中实现 二、 窗口菜单设计 效果展示图 三、图片资源的导入 步骤&#xff1a; 举例&#xff1a; 四、 对话框 1.模拟对话框 2. 非模态对话框 3.错误对话框 4.信息对话框 5.提问对话…

【C++】缺省参数和函数重载

目录 1.缺省参数 1.1缺省参数的定义 1.2 缺省参数的简单应用 1.3 缺省参数分类&#xff1a;全缺省参数和半缺省参数 1.3.1半缺省参数 1.3.2全缺省参数 3.缺省参数注意事项&#xff1a;缺省参数不能在函数声明和定义中同时出现 4.函数重载 4.1 函数重载概念 4.2 函数参数类型…

matlab使用教程(35)—求解时滞微分方程(3)

1中立型 DDE 以下示例说明如何使用 ddensd 求解中立型 DDE&#xff08;时滞微分方程&#xff09;&#xff0c;其中时滞出现在导数项中。此问题最初由 Paul [1] 提出。方程是&#xff1a; 由于该方程在 y ′ 项中存在时滞&#xff0c;因此该方程称为中立型 DDE。如果时滞仅出现…

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的基于个人需求和地域特色的外卖推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

10 - 三态门和寄存器

1. 三态门 1.1 引入背景 现在我们需要封装一个单字节存储器。 Clear 清零&#xff0c;Pre 置 1&#xff0c;CP 的上升沿将输入 DI 数据写入。 问题&#xff1a;总线冲突。如果将多个存储器连到一起&#xff0c;就会出现一个输入连到多个输出发生数据冲突的问题。 需要三态门…

【单片机家电产品学习记录--红外线】

单片机家电产品学习记录–红外线 红外手势驱动电路&#xff0c;&#xff08;手势控制的LED灯&#xff09; 原理 通过红外线对管&#xff0c;IC搭建的电路&#xff0c;实现灯模式转换。 手势控制灯模式转换&#xff0c;详细说明 转载 1《三色调光LED台灯电路》&#xff0c…

计数排序解读

当我们提及排序算法时&#xff0c;通常会想到冒泡排序、选择排序、插入排序、归并排序和快速排序等经典算法。然而&#xff0c;今天我们要探讨的是一种非比较型整数排序算法——计数排序。计数排序在某些特定场景下表现出色&#xff0c;具有线性的时间复杂度。下面我们将深度剖…