使用JDBC实现数据访问对象层(DAO)代码示例

下面是使用JDBC实现数据访问对象层(DAO)代码示例的完整攻略:

1. JDBC DAO层的基本结构

在实现JDBC DAO层之前,需要先确定DAO层的基本结构。一般来说,DAO层包括以下三个部分:

  1. DAO接口,用于定义数据的增删改查操作。
  2. DAO实现类,用于实现DAO接口,提供具体的数据访问操作。
  3. 实体类,用于存储数据库中的数据,每个实体类对应一张数据表。

2. JDBC DAO的实现过程

2.1 JDBC工具类的编写

在实现JDBC DAO之前,需要先编写JDBC工具类,用于进行数据库连接、关闭等操作。以下是一个简单的JDBC工具类的示例:

public class JdbcUtils {
    private static final String url = "jdbc:mysql://localhost:3306/test";
    private static final String username = "root";
    private static final String password = "";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, username, 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();
        }
    }
}

2.2 DAO接口的定义

定义DAO接口,用于定义数据的增删改查操作。以下是一个简单的DAO接口的示例:

public interface UserDao {
    void addUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
    User getUserById(int id);
    List<User> getAllUser();
}

2.3 DAO实现类的编写

实现DAO接口,提供具体的数据访问操作。以下是一个简单的DAO实现类的示例:

public class UserDaoImpl implements UserDao {
    @Override
    public void addUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JdbcUtils.getConnection();
            stmt = conn.prepareStatement("insert into user(id, name, age) values(?, ?, ?)");
            stmt.setInt(1, user.getId());
            stmt.setString(2, user.getName());
            stmt.setInt(3, user.getAge());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, stmt, null);
        }
    }

    @Override
    public void updateUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JdbcUtils.getConnection();
            stmt = conn.prepareStatement("update user set name = ?, age = ? where id = ?");
            stmt.setString(1, user.getName());
            stmt.setInt(2, user.getAge());
            stmt.setInt(3, user.getId());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, stmt, null);
        }
    }

    @Override
    public void deleteUser(int id) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = JdbcUtils.getConnection();
            stmt = conn.prepareStatement("delete from user where id = ?");
            stmt.setInt(1, id);
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, stmt, null);
        }
    }

    @Override
    public User getUserById(int id) {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        User user = null;
        try {
            conn = JdbcUtils.getConnection();
            stmt = conn.prepareStatement("select * from user where id = ?");
            stmt.setInt(1, id);
            rs = stmt.executeQuery();
            if (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, stmt, rs);
        }
        return user;
    }

    @Override
    public List<User> getAllUser() {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        List<User> userList = new ArrayList<>();
        try {
            conn = JdbcUtils.getConnection();
            stmt = conn.prepareStatement("select * from user");
            rs = stmt.executeQuery();
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, stmt, rs);
        }
        return userList;
    }
}

2.4 实体类的定义

实现实体类,用于存储数据库中的数据,每个实体类对应一张数据表。以下是一个简单的实体类的示例:

public class User {
    private int id;
    private String name;
    private int age;

    // getter/setter省略
}

3. 示例说明

3.1 添加数据

首先,通过JDBC DAO层的工具类获取数据库连接。

Connection conn = JdbcUtils.getConnection();

然后创建UserDaoImpl对象,并调用addUser(User user)方法,添加数据。

UserDao userDao = new UserDaoImpl();
User user = new User();
user.setId(1);
user.setName("张三");
user.setAge(18);
userDao.addUser(user);

3.2 查询数据

首先,通过JDBC DAO层的工具类获取数据库连接。

Connection conn = JdbcUtils.getConnection();

然后创建UserDaoImpl对象,并调用getUserById(int id)方法,查询数据。

UserDao userDao = new UserDaoImpl();
User user = userDao.getUserById(1);
System.out.println(user.getName());

从数据库中查询出的数据将会被封装到User对象中返回。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JDBC实现数据访问对象层(DAO)代码示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 快速搭建一个SpringBoot项目(纯小白搭建教程)

    让我以标准的markdown格式文本,详细讲解“快速搭建一个SpringBoot项目(纯小白搭建教程)”的完整攻略。 快速搭建一个SpringBoot项目(纯小白搭建教程) SpringBoot是一个快速构建基于Spring框架的应用程序的工具。它可以简化Java程序开发的复杂度,使得开发人员可以更加专注于业务逻辑的实现。在这里,我将为大家介绍如何简单快速地…

    Java 2023年5月15日
    00
  • SpringBoot多环境配置教程详解

    SpringBoot多环境配置教程详解 在开发SpringBoot项目时,我们通常需要针对不同的环境进行配置,例如开发环境、测试环境、生产环境等等。本文将详细讲解如何在SpringBoot项目中实现多环境配置。 方法一:使用多个properties/yml文件 我们可以在SpringBoot项目中使用多个properties/yml文件,分别存放不同环境的配…

    Java 2023年5月31日
    00
  • Idea如何导入一个SpringBoot项目的方法(图文教程)

    下面我将详细讲解Idea如何导入一个SpringBoot项目的方法。 1. 创建SpringBoot项目 首先,我们需要创建一个SpringBoot项目,这里以使用Spring Initializr来创建为例。打开https://start.spring.io/,根据需求选择相应的配置,然后点击Generate下载生成的项目压缩包。解压后我们就得到了一个基本…

    Java 2023年5月19日
    00
  • 这一次搞懂SpringMVC原理说明

    一、 SpringMVC 原理 SpringMVC 是 Spring 框架中的一个模块,是用来实现基于 Java 技术的 Web 应用程序开发的。下面介绍 SpringMVC 的原理。 请求 dispatcherServlet 当用户请求一个页面时,dispatcherServlet 是 SpringMVC 的入口点。dispatcherServlet 是一…

    Java 2023年5月19日
    00
  • 微信小程序模板消息推送的两种实现方式

    微信小程序的模板消息可以让开发者向用户发送特定的消息,提醒用户进行相关操作等。模板消息的推送可以有两种实现方式,分别是通过微信后台的服务接口进行推送和通过开发者自行实现后端服务器进行推送。 通过微信后台的服务接口进行推送 该方式需要先进行微信公众号的设置并获取相关的服务接口信息,具体实现步骤如下: 登录微信公众平台,进入开发-开发者工具-接口测试页; 选择模…

    Java 2023年5月23日
    00
  • SpringBoot集成内存数据库Derby的实践

    请看以下攻略: SpringBoot集成内存数据库Derby实践 Apache Derby是基于Java的内存关系型数据库。这篇文章将介绍如何在Spring Boot应用程序中使用Derby,实现内存数据库的集成,以及用于创建表、插入数据以及检索和删除数据的几个简单示例。 集成Derby 要集成Derby,需要添加以下依赖项到pom.xml中: <de…

    Java 2023年5月20日
    00
  • java 遍历Map及Map转化为二维数组的实例

    以下是详细的讲解: 遍历Map 在Java中,我们可以使用 java.util.Map 接口来表示键值对的集合。 Map的常用实现类有 HashMap、TreeMap 和 LinkedHashMap。 要遍历Map中的键值对,我们可以使用 entrySet() 方法来遍历Map中的每一个键值对。 示例代码如下: Map<String, String&g…

    Java 2023年5月26日
    00
  • Java实现一个达达租车系统的步骤详解

    Java实现一个达达租车系统的步骤详解 第一步:需求分析和规划 在开始开发代码之前,必须先了解项目的需求和规划。在分析需求方面,需要考虑以下几点: 使用者和管理者的系统需求。 如何处理订单和租车。 如何计算租车费用。 如何处理支付和退款。 在规划方面,应该思考以下几点: 创建和管理车辆库存。 创建和管理订单。 创建和管理支付系统。 创建和管理价格计算方法。 …

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