基于JDBC封装的BaseDao(实例代码)

基于JDBC封装的BaseDao可以使得我们在操作关系型数据库时更加方便、快捷。下面我将详细讲解BaseDao的使用攻略。

一、什么是BaseDao

BaseDao是基于JDBC进行封装的通用数据访问层,提供了基本的CURD方法以便我们进行数据操作。在使用BaseDao的同时,我们也可以轻松地进行扩展和定制,满足复杂查询和特殊需求。

二、BaseDao类的代码结构

public abstract class BaseDao<T> implements IBaseDao<T> {
    private Connection connection;
    protected PreparedStatement pstm;
    protected ResultSet rs;

    public BaseDao() {
        try {
            Class.forName(MYSQL_DRIVER);
            connection = DriverManager.getConnection(MYSQL_URL, MYSQL_USERNAME, MYSQL_PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public int insert(T t) {
        // 插入操作
    }

    @Override
    public int delete(T t) {
        // 删除操作
    }

    @Override
    public int update(T t) {
        // 修改操作
    }

    @Override
    public List<T> selectAll() {
        // 查询所有操作
    }

    @Override
    public T selectById(Integer id) {
        // 根据ID查询单条记录操作
    }

    protected void release(){
        // 释放资源方法
    }
}

三、BaseDao类的说明

1. 抽象类

BaseDao是一个抽象类,我们在实际使用时需要基于此类进行扩展。

2. 泛型

BaseDao类实现了IBaseDao接口,并定义了泛型T,使得我们可以使用该类来操作任意类型的对象。

3. 数据库连接

在BaseDao类的构造方法中,我们获取数据库连接,并在其中加载了MySQL驱动。

4. CURD操作

BaseDao类提供了基本的CURD操作(增删改查)方法,包括insert、delete、update、selectAll和selectById等。

5. 释放资源

BaseDao类中提供了release方法,用于释放资源。

四、使用示例

下面我将通过两个示例详细说明如何使用BaseDao。

示例1:查询学生列表

假设我们有一个Student类,我们希望通过BaseDao查询出所有的学生列表。

我们可以首先定义一个StudentDao类继承自BaseDao类,如下所示:

public class StudentDao extends BaseDao<Student> {
}

在StudentDao类中,我们继承了BaseDao类,并指定了Student类型,这样我们就可以使用BaseDao中定义的方法来操作Student对象了。

现在我们可以定义一个selectAll方法来查询所有的学生列表,示例代码如下:

public List<Student> selectAll() {
    List<Student> studentList = new ArrayList<>();
    try {
        String sql = "SELECT * FROM student";
        pstm = connection.prepareStatement(sql);
        rs = pstm.executeQuery();
        while (rs.next()) {
            Student student = new Student();
            student.setId(rs.getInt("id"));
            student.setName(rs.getString("name"));
            student.setAge(rs.getInt("age"));
            student.setGender(rs.getString("gender"));
            studentList.add(student);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        release();
    }
    return studentList;
}

在selectAll方法中,我们通过获取数据库连接,执行SQL语句,将结果保存在List对象中,并且在最后释放资源。

现在我们就可以通过StudentDao类的实例来调用selectAll方法,示例代码如下:

StudentDao studentDao = new StudentDao();
List<Student> studentList = studentDao.selectAll();

示例2:增加学生信息

现在我们希望通过BaseDao类向数据库中增加一条学生信息记录。

假设我们已经有一个Student对象,可以使用下面的示例代码将其插入到数据库中。

public int insert(Student student) {
    int rows = 0;
    try {
        String sql = "INSERT INTO student (name, age, gender) VALUES (?, ?, ?)";
        pstm = connection.prepareStatement(sql);
        pstm.setString(1, student.getName());
        pstm.setInt(2, student.getAge());
        pstm.setString(3, student.getGender());
        rows = pstm.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        release();
    }
    return rows;
}

在insert方法中,我们通过获取数据库连接,执行SQL语句,得到受影响的行数,并且在最后释放资源。

现在我们就可以通过StudentDao类的实例来调用insert方法,示例代码如下:

StudentDao studentDao = new StudentDao();
Student student = new Student();
student.setName("张三");
student.setAge(18);
student.setGender("男");
studentDao.insert(student);

这样就可以将一个名为“张三”,年龄为18岁,性别为男的学生信息插入到数据库中了。

到这里为止,我们已经对BaseDao类进行了详细的攻略,并且通过两个示例说明了其中的使用方法。希望这篇文章可以帮助你更好的理解和使用BaseDao类。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JDBC封装的BaseDao(实例代码) - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • Java数据结构之位图的简单实现和使用

    Java数据结构之位图的简单实现和使用 随着数据量的快速增长,数据结构的高效率已经变得越来越重要。而位图是一个简单而高效率的用于数据存储与查询的数据结构。本文将详细介绍位图的概念、实现过程以及使用方法。 什么是位图? 位图(Bit Map) 是一种非常简单的存储数据结构,它使用一个或多个二进制位来表示一个数据的状态。位图的本质是一个大整数,其中的每个二进制位…

    Java 2023年5月26日
    00
  • JAVA SFTP文件上传、下载及批量下载实例

    JAVA SFTP文件上传、下载及批量下载实例是一项非常常见的开发需求,下面就为大家介绍一下如何完成这个任务。 一、引入依赖库 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version&g…

    Java 2023年5月19日
    00
  • java写入文件的几种方法分享

    以下是Java写入文件的几种方法分享的完整攻略。 1. 概述 Java中提供了多种方式来进行文件写入。下面我们将介绍Java中常用的几种文件写入方式。 2. FileWriter方式 使用FileWriter可以向文件写入字符流。 import java.io.FileWriter; import java.io.IOException; public cl…

    Java 2023年5月20日
    00
  • 如何使用Spring-Test对Spring框架进行单元测试

    Spring-Test是一个Spring框架提供的测试工具,可以帮助我们方便的对Spring框架进行单元测试。下面将提供一个详细的攻略,讲解如何使用Spring-Test进行单元测试。 步骤一:添加依赖 在使用Spring-Test之前,需要在项目中添加Spring-Test依赖。如果使用Maven构建项目,可以在pom.xml文件中添加如下配置: <…

    Java 2023年5月19日
    00
  • Struts2拦截器Interceptor的原理与配置实例详解

    Struts2拦截器Interceptor的原理 什么是Interceptor Interceptor拦截器,在Struts中负责拦截请求并且在Action处理请求之前或之后进行一系列的自定义操作,常用于日志记录、权限验证、性能监控等方面。 Interceptor的配置与执行 Interceptor的配置主要有两个步骤: 1.在struts.xml中进行声明…

    Java 2023年5月20日
    00
  • Struts1和struts2的区别_动力节点Java学院整理

    Struts1和Struts2的区别 什么是Struts1和Struts2 Struts1是一个基于MVC模式的Web应用框架,由Apache组织开发和维护,是早期Web开发中使用较为广泛的框架之一。 Struts2,原名WebWork,是Struts1的升级版,也是一个基于MVC模式的Web应用框架,由Apache组织维护。 Struts1和Struts2…

    Java 2023年5月20日
    00
  • 解析javascript 数组以及json元素的添加删除

    要解析JavaScript数组和JSON元素的添加和删除,我们需要做以下几个步骤: 1. 创建一个数组或JSON对象 首先,我们需要创建一个空的数组或JSON对象。 创建数组 let myArray = []; 创建JSON对象 let myJSON = {}; 2. 向数组或JSON对象中添加元素 添加元素是一种常见的操作,我们可以使用数组的push()方…

    Java 2023年5月26日
    00
  • 什么是Java代码混淆?

    Java代码混淆是一种通过对Java代码进行加密、重命名、删除无关代码、添加假代码等方式来提高Java程序的安全性,使反向工程变得更加困难的技术。 使用Java代码混淆可以有效地保护你编写的Java程序的知识产权、商业机密以及避免代码被黑客反向分析、破解。下面是使用Java代码混淆的完整攻略。 步骤一:选择适合的Java代码混淆工具 目前市面上存在一些比较常…

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