JDBC通用增删改查方法实现

本文以水果库存管理系统为例,详细介绍了如何使用JDBC实现通用的增删改查方法。首先,讨论了实体类与表的映射,包括bean的创建和数据库表结构。接着,阐述了连接数据库的操作,将连接和资源释放封装到JDBCUtils工具类。最后,重点讲解了通用DAO层的代码实现,包括增删改操作的提取函数和查询操作的反射应用,以及抽象类BaseDao和其实现类的设计。

以水果库存管理系统为例,实现通用的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 ... params
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值