Java JDBC自定义封装工具类的步骤和完整代码

yizhihongxing

Java JDBC是Java中进行关系型数据库操作的标准方式,它提供了丰富的API让我们灵活处理数据库的连接、操作和结果集。但是,使用Java JDBC进行开发时没有封装的话会显得冗长、繁琐,因此自定义封装工具类可以提高工作效率并提高代码可读性和可维护性。

下面是Java JDBC自定义封装工具类的步骤和完整代码攻略:

1.建立数据库连接

public class DBUtil {
    private static Connection conn;
    private static final String URL = "jdbc:mysql://localhost:3306/demo_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static Connection getConnection() {
        try {
            //加载驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");
            //获得数据库连接
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
}

2.释放数据库资源

public static void release(ResultSet rs, Statement stmt, Connection conn) {
   try {
        if (rs != null) {
            rs.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

3.封装查询操作

public static List<Map<String, Object>> executeQuery(String sql, Object[] params) {
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    List<Map<String, Object>> dataList = new ArrayList<>();
    try {
        conn = getConnection();
        pstmt = conn.prepareStatement(sql);
        if (params != null && params.length > 0) {
            for (int i = 0; i < params.length; i++) {
                pstmt.setObject(i + 1, params[i]);
            }
        }
        rs = pstmt.executeQuery();
        ResultSetMetaData metaData = rs.getMetaData();
        int colCount = metaData.getColumnCount();
        while (rs.next()) {
            Map<String, Object> data = new HashMap<>();
            for (int i = 1; i <= colCount; i++) {
                String colName = metaData.getColumnName(i);
                Object colValue = rs.getObject(i);
                data.put(colName, colValue);
            }
            dataList.add(data);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        release(rs, pstmt, conn);
    }
    return dataList;
}

4.封装更新操作

public static int executeUpdate(String sql, Object[] params) {
    Connection conn = null;
    PreparedStatement pstmt = null;
    int result = 0;
    try {
        conn = getConnection();
        pstmt = conn.prepareStatement(sql);
        if (params != null && params.length > 0) {
            for (int i = 0; i < params.length; i++) {
                pstmt.setObject(i + 1, params[i]);
            }
        }
        result = pstmt.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        release(null, pstmt, conn);
    }
    return result;
}

以上就是封装Java JDBC的核心代码部分,下面是两个简单的示例说明:

示例一:查询表中所有数据

String sql = "select * from user";
List<Map<String, Object>> result = DBUtil.executeQuery(sql, null);
for (Map<String, Object> map : result) {
    for (String key : map.keySet()) {
        System.out.println(key + ":" + map.get(key));
    }
}

示例二:更新表中数据

String sql = "update user set age = ? where id = ?";
Object[] params = {25, 1};
int result = DBUtil.executeUpdate(sql, params);
if (result > 0) {
    System.out.println("操作成功!");
} else {
    System.out.println("操作失败!");
}

以上是Java JDBC自定义封装工具类的完整攻略,通过这种方式可以简化开发人员的工作,提高开发效率并降低出错率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java JDBC自定义封装工具类的步骤和完整代码 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • java异常级别与捕获的示例代码

    下面是关于Java异常级别与捕获的详细攻略: 异常级别 Java异常的级别(或称之为异常的分类)按照继承体系分为三个大类:Error、Exception、RuntimeException。其中Error和RuntimeException是Java语言中最常见的两种异常。下面我们分别来介绍这三类异常的特点: Error Error是Java中的严重问题,一般都…

    Java 2023年5月27日
    00
  • IDEA 离线迁移Springboot工程的方法步骤

    下面我将为你详细讲解“IDEA 离线迁移Springboot工程的方法步骤”的攻略。 一、离线环境准备 在没有网络的情况下,我们需要先将工程所需的依赖预先下载到本地。具体的步骤如下: 首先在有网络的环境下,利用 maven 将所需的依赖下载到本地。在控制台执行命令: mvn dependency:copy-dependencies 这会将所需依赖下载到${b…

    Java 2023年5月20日
    00
  • Java JVM原理与调优_动力节点Java学院整理

    Java JVM原理与调优攻略 什么是JVM JVM(Java Virtual Machine)是Java虚拟机的英文缩写,其是Java语言的核心,可运行Java字节码。Java字节码在编译Java源代码时自动生成,可在跨平台的环境下执行。JVM是一个虚拟的计算机,它有自己的指令集,称为字节码(Bytecode),程序在运行时被翻译成特定平台的机器语言执行。…

    Java 2023年5月26日
    00
  • MyBatis传入数组集合类并使用foreach遍历

    MyBatis是一款流行的Java ORM框架,可以用于简化数据库操作。这里将详细讲解如何在MyBatis中传入数组集合类并使用foreach进行遍历。 第一步:传入数组集合类 在MyBatis中,可以通过使用@Param注解来传递参数。@Param注解需要指定参数的名称,例如: <select id="selectUsersByIds&qu…

    Java 2023年5月26日
    00
  • 经典的Java面试题及回答集锦(基础篇)

    经典的Java面试题及回答集锦(基础篇)攻略 1. 介绍 本篇攻略是针对Java基础面试的常见问题及回答进行总结。经典的Java面试题及回答集锦主要分为六个部分,包括Java基础,集合,多线程,IO,JVM及框架。本篇攻略将重点关注Java基础的面试题。 2. Java基础的面试题及回答 2.1 基本数据类型 Q: Java有哪些基本数据类型?请列举。 Ja…

    Java 2023年5月19日
    00
  • Java 内存溢出的原因和解决方法

    Java 内存溢出的原因和解决方法 Java 内存溢出是 Java 开发中常见的问题之一,当程序运行需要的内存超过了 JVM 分配给程序的内存时,就会发生内存溢出的问题。本文将详细介绍 Java 内存溢出的原因和解决方法,以及两个示例说明。 常见内存溢出的原因 1. 对象无法被合理的回收 在 Java 中,内存的回收是通过垃圾回收机制(GC)实现的。当对象引…

    Java 2023年5月26日
    00
  • java发送kafka事务消息的实现方法

    Java发送Kafka事务消息的实现方法可以分为以下步骤: 步骤一:配置事务环境 配置Kafka事务环境需要设置事务ID和Kafka事务的属性。以下是示例代码: Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092&…

    Java 2023年5月20日
    00
  • Java函数式编程(六):Optional

    Java函数式编程(六):Optional Optional简介 在Java 8中,Optional成为了一个非常重要的新特性。Optional是一个容器类型,代表一个值存在或不存在。Original Java中,我们经常返回null来表示一个空值。但是在Java 8 中使用Optional来表示一个值不存在更加明确和安全。 Optional 类(java.…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部