如何使用JDBC实现工具类抽取

使用JDBC实现工具类抽取需要遵循以下一般步骤:

  1. 加载JDBC驱动
  2. 创建数据库连接
  3. 创建Statement/PreparedStatment对象
  4. 执行SQL语句
  5. 处理结果集
  6. 释放资源

下面通过两个示例说明具体操作。

示例1:查询数据库

public class JdbcUtil {
    private static String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
    private static String user = "root";
    private static String password = "123456";

    static {
        try {
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

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

    public static List<User> getUsers(String nameLike) {
        List<User> userList = new ArrayList<>();

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            // 获取连接
            conn = JdbcUtil.getConnection();

            // 预编译sql
            String sql = "SELECT id, name, age, gender, phone FROM user WHERE name LIKE ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "%" + nameLike + "%");

            // 执行查询操作
            rs = pstmt.executeQuery();
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender"));
                user.setPhone(rs.getString("phone"));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            JdbcUtil.close(conn, pstmt, rs);
        }

        return userList;
    }
}

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;
    private String phone;

    // 省略getter/setter方法
}

public class TestJdbcUtil {
    public static void main(String[] args) {
        List<User> userList = JdbcUtil.getUsers("张");
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

示例2:插入数据

public class JdbcUtil {
    private static String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
    private static String user = "root";
    private static String password = "123456";

    static {
        try {
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

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

    public static boolean addUser(User user) {
        Connection conn = null;
        PreparedStatement pstmt = null;

        try {
            conn = JdbcUtil.getConnection();

            String sql = "INSERT INTO user(name, age, gender, phone) VALUES(?, ?, ?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, user.getName());
            pstmt.setInt(2, user.getAge());
            pstmt.setString(3, user.getGender());
            pstmt.setString(4, user.getPhone());

            int count = pstmt.executeUpdate();
            if (count > 0) {
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.close(conn, pstmt, null);
        }

        return false;
    }
}

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;
    private String phone;

    // 省略getter/setter方法
}

public class TestJdbcUtil {
    public static void main(String[] args) {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        user.setGender("男");
        user.setPhone("13800000000");

        boolean isSuccess = JdbcUtil.addUser(user);
        if (isSuccess) {
            System.out.println("添加成功!");
        } else {
            System.out.println("添加失败!");
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用JDBC实现工具类抽取 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP 巧用数组降低程序的时间复杂度

    PHP巧用数组降低程序的时间复杂度 在PHP开发中,数组是常用的数据类型之一。通过巧妙地运用数组,可以降低程序的时间复杂度,提高程序效率。接下来,我们将探讨如何使用数组降低程序的时间复杂度。 使用数组代替循环 通常情况下,我们需要在数组中查找特定的元素。如果使用循环进行遍历查找,时间复杂度为O(n),而使用In_array函数则可以将时间复杂度降至O(1)。…

    Java 2023年5月26日
    00
  • SpringMVC+Mybatis二维码实现多平台付款(附源码)

    下面我将详细讲解“SpringMVC+Mybatis二维码实现多平台付款(附源码)”的完整攻略。 1. 概述 本文介绍如何使用SpringMVC和Mybatis实现多平台付款系统,主要包括以下几个方面。 使用SpringMVC实现Web应用程序的开发; 使用Mybatis对数据库进行访问; 使用二维码实现多平台付款。 2. 开发环境和技术栈 JDK 1.8 …

    Java 2023年5月26日
    00
  • springmvc整合ssm配置的详细代码

    下面我将为您详细讲解如何在Spring MVC框架下整合SSM(Spring + SpringMVC + MyBatis)框架,并提供两个示例说明。 步骤一:创建Maven项目 首先,您需要创建一个Maven项目,以便引入所需的库和依赖项。创建完成后,在pom.xml中添加以下依赖: <dependencies> <!– Spring M…

    Java 2023年6月15日
    00
  • 详细解读Java的串口编程

    详细解读Java的串口编程 什么是串口 串口是一种计算机外部设备与计算机通信的接口标准,它通过串口线连接计算机和设备,在数据传输时通过线上的电压变化来进行信息传递。 Java中实现串口编程 导入rxtxcomm.jar和win32com.dll两个文件,这两个文件提供了Java访问串口的接口。在导入了这两个文件之后,就可以在Java程序中访问串口了。 使用S…

    Java 2023年5月26日
    00
  • Java下使用Oracle存储过程(详解)第3/3页

    下面是详细讲解“Java下使用Oracle存储过程(详解)第3/3页”的完整攻略。 1. 概述 这篇攻略主要介绍如何在Java中使用Oracle存储过程。存储过程是一组一起执行的SQL语句,可以接收参数并返回结果。在一些大型应用中,存储过程的使用可以提高数据库性能,减小网络传输压力,增加数据安全等等。 2. 实现步骤 步骤如下: (1)创建存储过程 首先在O…

    Java 2023年5月26日
    00
  • MyBatis的通俗理解:SqlSession.getMapper()源码解读

    下面是“MyBatis的通俗理解:SqlSession.getMapper()源码解读”的完整攻略。 一、背景介绍 在MyBatis中,SqlSession.getMapper()方法是一个非常重要的方法,可以获取到Mapper接口的代理对象,从而进行数据库操作。但是,为什么可以用一个接口进行数据库操作呢?这就需要了解一下MyBatis的动态代理机制。 二、…

    Java 2023年5月20日
    00
  • JavaCV摄像头实战之实现口罩检测

    JavaCV摄像头实战之实现口罩检测 简介 本攻略将介绍如何使用JavaCV以及OpenCV在Java中实现口罩检测。通过利用JavaCV调用OpenCV的相关函数实现摄像头捕获、处理以及检测口罩的功能。 准备工作 安装Java环境 确保已经安装好了Java环境,并且可以在命令行中运行。 安装JavaCV和OpenCV库 在JavaCV官网(https://…

    Java 2023年5月20日
    00
  • 微信开发之网页授权获取用户信息(二)

    针对“微信开发之网页授权获取用户信息(二)”,我可以提供如下完整攻略: 1. 确定使用的OAuth2.0授权方式 根据微信公众平台的文档,我们可以使用两种方式进行OAuth2.0授权,分别是snsapi_base和snsapi_userinfo。其中,snsapi_base授权只能获取用户的openid信息,而snsapi_userinfo则可以获取用户的基…

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