JDBC 数据库增删改查的通用代码示例详解

本文详细介绍了如何使用JDBC进行数据库的增删改查操作,包括加载数据库驱动、建立连接、创建PrepareStatement、处理ResultSet以及关闭资源。重点讲解了增删改查的通用代码,批量操作的实现以及设计UserEntityMapper类和service、dao层的思路,以提高代码复用性和开发效率。
摘要由CSDN通过智能技术生成

JDBC的基本操作

为了使代码复用,提高开发效率,设计JDBC数据库的增删改查非常有必要。

JDBC 操作数据步骤一般分为如下五个步骤:

一、加载数据库驱动类

  • Class.forName("com.mysql.cj.jdbc.Driver");

二、建立连接(Connection)

  • Connection connection = DriverManager.getConnection(url,user,password);

三、创建用于向数据库发送 SQL 的 PrepareStatement 对象,并发送 sql

  • PrepareStatement statement = connection.PrepareStatement(sql);

四、从结果集的 ResultSet 中取出返回数据。

  • ResultSet resultSet = statement.excuteQuery();

五、关闭相关资源,并释放内存

  • *.close()

使用Properties对象

Properties 对象可以保存了一组关键数值。它通过调用 getConnection() 方法,将驱动程序属性传递给驱动程序。

在根目录(位置可以任意)新建一个jdbc.properties文件

mysql8需要设置时区,有cj目录,mysql5没有。时区可设置为GMT8表示东八区

url=jdbc:mysql://58.42.239.163:3306/jdbc?serverTimezone=Asia/Shanghai&characterEncoding=UTF8&useSSL=false
user=star
password=Star@123456

说明:

  • Properties prot = new Properties();

    创建配置文件对象,或者使用IO流读取

  • InputStream input = JDBC1.class.getClassLoader().getResourceAsStream("jdbc.properties");

    通过loader加载配置文件

  • prot.load(input);

    通过输入流读取配置文件信息

  • prot.getProperty("url")

    通过getXXX()读取配置数据

增删改查工具类

加载数据库驱动类

通过Class.forName反射加载mysql8驱动类

因为每次对数据库操作都会加载驱动类,通过使用static代码块,可以直接在类加载的时候就加载,只执行一次,就不用每次都去加载

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

建立连接(Connection)

将连接封装成工具方法

/**
 * 获取连接
 *
 * @return 返回得到创建的连接
 */
public static Connection getConnection() {
   
    Properties properties = new Properties();
    Connection connection = null;
    try (
            FileInputStream fis = new FileInputStream("jdbc.properties");
    ) {
   
        properties.load(fis);
        connection = DriverManager.getConnection(properties.getProperty("url"), properties);
    } catch (Exception e) {
   
        e.printStackTrace();
    }
    return connection;
}

关闭connection和statement

重载三个Close()方法,在使用完资源后,调方法关闭资源

/**
 * 关闭connection连接
 *
 * @param connection 连接
 */
public static void Close(Connection connection) {
   
    if (connection != null) {
   
        try {
   
            connection.close();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
    }
}

/**
 * 关闭statement连接
 *
 * @param statement 连接
 */
public static void Close(Statement statement) {
   
    if (statement != null) {
   
        try {
   
            statement.close();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
    }
}

/**
 * 关闭connection和statement连接
 *
 * @param connection 连接
 */
public static void Close(Connection connection, Statement statement) {
   
    Close(statement);
    Close(connection);
}

增删改操作的通用代码

传递需要执行的sql语句,参数可以选择满足条件的参数

PrepareStatement是预编译,一次编译,多次执行,提高效率,sql条件使用”?“可以防止sql注入问题

/**
 * 增删改的通用操作
 *
 * @param sql  需要执行的sql语句
 * @param params 条件参数
 * @return 返回受影响的行数
 */
public static int executeUpdate(String sql, Object... params) {
   
    Connection connection = getConnection();
    PreparedStatement statement = null;
    int rows = -1;
    if (connection == null) {
   
        return rows;
    }
    try {
   
        connection.setAutoCommit(false);
        statement = connection.prepareStatement(sql);
        for (int i = 0; i < params.length; i++) {
   
            statement.setObject(i + 1, params[i]);
        }
        rows = statement.</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抹泪的知更鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值