使用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日

相关文章

  • MySQL为例讲解JDBC数据库连接步骤

    MySQL为例讲解JDBC数据库连接步骤 JDBC简介 JDBC(Java Database Connectivity)是一种Java语言中访问数据库的API(Application Programming Interface)。 JDBC可以让Java程序连接到各种关系型数据库,进行数据的读取、写入操作等。JDBC的设计目标是使Java程序员从不同的关系型…

    Java 2023年5月20日
    00
  • Java的Struts框架报错“ActionFormException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ActionFormException”错误。这个错误通常由以下原因之一起: 表单验证失败:如果表单验证失败,则可能会出现此错误。在这种情况下,需要检查表单验证规则以解决此问题。 表单数据类型不匹配:如果表单数据类型与ActionForm中定义的类型不匹配,则可能会出现此错误。在这种情况下,需要检查表单数据类型…

    Java 2023年5月5日
    00
  • SpringBoot整合Hibernate Validator实现参数验证功能

    下面我将详细讲解“SpringBoot整合Hibernate Validator实现参数验证功能”的完整攻略,过程中将包含两条示例。 什么是Hibernate Validator Hibernate Validator是一款Java Bean验证框架,它提供了一套丰富的注解,使用这些注解可以很方便地实现对Java Bean字段的验证。在一些Web开发中,我们…

    Java 2023年5月20日
    00
  • MyBatis的9种动态标签详解

    MyBatis的9种动态标签详解 在使用MyBatis进行数据库操作时,动态SQL是一个经常用到的特性。MyBatis提供了9种动态标签,分别是<if>、<choose>、<when>、<otherwise>、<trim>、<where>、<set>、<foreach&…

    Java 2023年5月19日
    00
  • spring+srpingmvc+hibernate实现动态ztree生成树状图效果

    实现动态ztree生成树状图效果,需要涉及到Spring+Spring MVC+Hibernate的技术栈。下面是实现该功能的完整攻略: 1. 搭建项目框架 首先,我们需要搭建一个SpringMVC的项目,也就是创建一个maven工程。在pom.xml中添加spring、springMVC和hibernate的依赖。 <dependencies>…

    Java 2023年5月20日
    00
  • Spring Boot 和 Spring 到底有啥区别你知道吗

    Spring是一个Java企业级应用框架,该框架在应用开发中蕴含了大量的设计模式和最佳实践,并提供了特性多样、功能强大的模块,帮助开发者更好地实现业务功能。而Spring Boot是在Spring基础上进一步简化了Spring的配置和使用,提供了一些约定大于配置的方式,让开发者专注于业务逻辑的实现,而非框架细节。 下面分别从以下几个方面详细讲解Spring和…

    Java 2023年5月15日
    00
  • 详解Java中的数组与字符串相关知识

    详解Java中的数组与字符串相关知识 数组 定义 数组是一种用来存储同类型元素集合的数据结构,在Java中通过[]符号定义一个数组。 示例: int[] numbers = new int[5]; 上面的代码定义了一个长度为5的整型数组。 访问 通过下标访问数组元素,下标从0开始,可以直接访问数组元素,也可以遍历数组访问每个元素。 示例: int[] num…

    Java 2023年5月26日
    00
  • Java实现迷你图书管理系统案例全程

    Java实现迷你图书管理系统案例全程 系统介绍 本系统是一个基于Java编程语言的迷你图书管理系统,主要功能包括:图书信息录入,图书信息修改,图书信息查询和借阅归还管理等。本系统提供了简单易用的界面,让用户可以方便快捷地管理图书信息和借阅记录。 实现步骤 步骤1:搭建开发环境 在开始编程之前,首先需要搭建开发环境。本系统使用Java编程语言,因此需要在本地安…

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