如何使用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日

相关文章

  • Spring底层原理深入分析

    Spring底层原理深入分析 Spring是一个流行的Java框架,拥有强大的依赖注入和AOP功能。它在开发Java应用程序过程中起到了重要的作用。在本文中,我们将深入分析Spring的底层原理。 1. Spring框架的架构 Spring框架由以下组件组成: 核心容器:该组件包括BeanFactory、ApplicationContext以及其他实用工具和…

    Java 2023年5月19日
    00
  • spring boot与spring mvc的区别及功能介绍

    区别: Spring Boot和Spring MVC都是Spring框架的一部分。Spring MVC是一种基于MVC(Model-View-Controller)的Web框架,用于构建Web应用程序,而Spring Boot则是一个用于简化Spring应用程序开发的框架,它可以在开发过程中自动配置和管理一些常见的Spring功能,而无需进行手动配置。因此,…

    Java 2023年5月15日
    00
  • Java打印流原理及实例详解

    Java打印流原理及实例详解 Java打印流是Java IO包中非常常用的一个类库,通过打印流可以方便地向文件或者控制台等输出设备写入数据,下面我们来详细讲解Java打印流的原理及实例。 打印流的作用 打印流是为了方便输出数据而专门开发的一种处理流,在Java中,通过打印流我们可以将数据方便地输出到控制台或者文件中,可以轻而易举地实现输出文件、日志和其他信息…

    Java 2023年5月26日
    00
  • java反射实现javabean转json实例代码

    Java反射实现JavaBean转JSON实例代码攻略 什么是Java反射? Java反射是指在运行时来操作Java对象的能力。通过Java反射,我们可以在运行期间分析类的内部信息,并调用类的方法、获取属性等。我们可以利用Java反射来实现一些动态编程的功能,如动态代理、依赖注入等。 如何使用Java反射实现JavaBean转JSON? JavaBean是J…

    Java 2023年5月26日
    00
  • Mybatis获取参数值和查询功能的案例详解

    Sure! 首先我们来介绍一下Mybatis,它是一个基于Java的持久层框架,封装了JDBC操作数据库的细节,使得开发者只需要关注 SQL 本身即可。而“Mybatis获取参数值和查询功能的案例详解”这个主题则是围绕着 参数值 和 查询功能 来讲授Mybatis的使用方法。 下面我们将分别从 Mybatis获取参数值 和 Mybatis查询功能 两部分进行…

    Java 2023年5月20日
    00
  • 从SpringMVC迁移到Springboot的方法步骤

    将SpringMVC应用程序迁移到Spring Boot应用程序可以提高应用程序的可维护性和可扩展性。本文将详细讲解如何从SpringMVC迁移到Spring Boot,包括如何配置Spring Boot、如何迁移SpringMVC配置、如何迁移SpringMVC控制器等。 配置Spring Boot 在Spring Boot应用程序中,可以使用@Sprin…

    Java 2023年5月15日
    00
  • bootstrap table 多选框分页保留示例代码

    如果想要在bootstrap table中加入多选框并且保留在分页时的选定状态,可以按照以下步骤进行操作: 首先要在table的html代码中加入一个input元素作为多选框,示例代码如下: “` 姓名 性别 年龄 城市 张三 男 28 北京 李四 女 25 上海 王五 男 30 广州 “` 其中,第一个th元素中的input元素作为全选多选框,后面的每…

    Java 2023年6月16日
    00
  • Spring Boot在开发过程中常用IDEA插件

    Spring Boot在开发过程中常用IDEA插件 在使用Spring Boot进行开发时,我们可以使用一些常用的IDEA插件来提高开发效率和代码质量。本文将详细讲解Spring Boot在开发过程中常用IDEA插件的完整攻略,并提供两个示例。 1. Lombok插件 Lombok是一个Java库,可以通过注解来简化Java代码。在使用Spring Boot…

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