JDBC通用增删改查方法实现

以水果库存管理系统为例,实现通用的JDBC增删改查方法。

1、实体类和表

ORMObject/Relation Mapping,对象/关系数据库映射)是一种描述对象与关系数据库之间映射的规范。

a、bean

创建fruit类。

package com.lucky.fruit01.pojo;

public class Fruit {
   
    private Integer fid;

    private String name;

    private Integer price;

    private Integer fcount;

    private String remark;

    public Fruit() {
   
    }

    public Integer getFid() {
   
        return fid;
    }

    public void setFid(Integer fid) {
   
        this.fid = fid;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Integer getPrice() {
   
        return price;
    }

    public void setPrice(Integer price) {
   
        this.price = price;
    }

    public Integer getFcount() {
   
        return fcount;
    }

    public void setFcount(Integer fcount) {
   
        this.fcount = fcount;
    }

    public Fruit(Integer fid, String name, Integer price, Integer fcount, String remark) {
   
        this.fid = fid;
        this.name = name;
        this.price = price;
        this.fcount = fcount;
        this.remark = remark;
    }

    public String getRemark() {
   
        return remark;
    }

    public void setRemark(String remark) {
   
        this.remark = remark;
    }

    @Override
    public String toString() {
   
        return fid + "\t\t" + name + "\t\t" + price +  "\t\t" + fcount + "\t\t" + remark;
    }
}

b、表结构和属性

数据库中创建t_fruit表格,表格每个列和bean中每个属性一一对应,表里面每条数据代表了fruit bean的一个实例。
在这里插入图片描述

2、连接数据库

获取数据库连接,对数据库中数据进行操作,因为不管增删改查中的哪个操作,都首先需要连接数据库。操作完成之后,需要释放资源,因此将数据库连接和释放资源部分代码放到工具类JDBCUtils中。

package com.lucky.fruit01.utils.jdbc;

import java.lang.reflect.ParameterizedType;
import java.sql.*;
import java.util.Objects;

/**
 *  数据库连接工具
 */
public class JDBCUtils {
   
    /**
     * 获取数据库连接对象
     *
     * @param driver driver
     * @param user user
     * @param pwd pwd
     * @return 数据库连接对象
     */
    public static Connection getConnection(String driver, String url, String user, String pwd) {
   
        try {
   
            Class.forName(driver);
            return DriverManager.getConnection(url, user, pwd);
        } catch (ClassNotFoundException | SQLException e) {
   
            e.printStackTrace();
        }
        return null;
    }


    /**
     *  关闭连接
     *
     * @param resultSet resultSet
     * @param preparedStatement preparedStatement
     * @param connection connection
     */
    public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) {
   
        try {
   
            if (Objects.nonNull(resultSet)) {
   
                resultSet.close();
            }
            if (Objects.nonNull(preparedStatement)) {
   
                preparedStatement.close();
            }
            if (Objects.nonNull(connection)) {
   
                connection.close();
            }
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
    }
}

3、通用DAO层代码

a、增删改通用代码

对于增删改操作,其操作流程可以总结为
在这里插入图片描述提取函数:
输入参数:
1、sql
2、需要填充的参数,因为不知道需要填充参数的类型和数量,所以这个参数设置为object类型的可变参数。
输出参数:
更新和删除操作为影响行数;
增加操作为数据库主键。

 /**
     *  提取公共方法,执行更新,删除,和增加
     */
    protected int executeUpdate(String sql, Object ..
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JDBC (Java Database Connectivity) 是 Java 语言中用于与数据库交互的标准 API。以下是一个简单的 JDBC 示例,展示了如何使用 JDBC 进行基本的 CRUD(创建、读取、更新和删除)操作。这里以 MySQL 数据库为例: 首先,确保已添加 MySQL 驱动(如 MySQL Connector/J)到项目中,并导入相应的包: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; ``` 然后,定义数据库连接信息: ```java String url = "jdbc:mysql://localhost:3306/your_database"; String username = "your_username"; String password = "your_password"; ``` 接下来,我们写一个通用的 CRUD 方法: ```java public void operate(String tableName, String operation, String... args) { Connection conn = null; PreparedStatement pstmt = null; try { // 1. 获取数据库连接 conn = DriverManager.getConnection(url, username, password); // 2. 创建 SQL 语句 String sql; switch (operation) { case "insert": sql = "INSERT INTO " + tableName + " (column1, column2, ...) VALUES (?, ?, ...)"; pstmt = conn.prepareStatement(sql); for (int i = 0; i < args.length; i += 2) { pstmt.setString(i, args[i]); pstmt.setString(i + 1, args[i + 1]); } break; case "select": sql = "SELECT * FROM " + tableName + " WHERE condition = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, args); break; case "update": sql = "UPDATE " + tableName + " SET column1 = ?, column2 = ? WHERE condition = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, args); pstmt.setString(2, args); pstmt.setString(3, args); break; case "delete": sql = "DELETE FROM " + tableName + " WHERE condition = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, args); break; default: throw new IllegalArgumentException("Unsupported operation: " + operation); } // 3. 执行 SQL pstmt.executeUpdate(); // 4. 处理结果(对于 SELECT 操作) if ("select".equals(operation)) { ResultSet rs = pstmt.executeQuery(); // ... 处理查询结果 } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 使用方法示例: ```java // 插入数据 operate("your_table", "insert", "value1", "value2", ...); // 查询数据 operate("your_table", "select", "condition_value"); // 更新数据 operate("your_table", "update", "new_value", "other_column", "condition_value"); // 删除数据 operate("your_table", "delete", "condition_value"); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值