JavaWeb课程复习资料(六)——DAO与DAOImpl层封装

简介: JavaWeb课程复习资料(六)——DAO与DAOImpl层封装

1、DAO层

DAO层是接口层,故而需要使用【interface】修饰

image.png

源码如下:

package com.item.dao;
import com.item.pojo.UserInfo;
import java.util.List;
public interface UserInfoDAO {
    /**
     * 查询所有用户信息
     * @return
     */
    public List<UserInfo> GetAll();
    /**
     * 添加用户
     * @param info
     * @return
     */
    public boolean InsertUserInfo(UserInfo info);
    /**
     * 单个ID查询
     * @param id
     * @return
     */
    public UserInfo SelectById(int id);
    /**
     * 修改用户信息
     * @param info
     * @return
     */
    public boolean UpdateById(UserInfo info);
    /**
     * 根据id删除用户
     * @param id
     * @return
     */
    public boolean DeleteById(int id);
}


2、DAOImpl层

DAOImpl属于实现层,故而通过【】实现DAO层对应接口即可


image.png


编码过程中可以看到注释也是很完整的。


image.png

源码如下:


package com.item.daoimpl;
import com.item.dao.UserInfoDAO;
import com.item.jdbc.FactoryDB;
import com.item.pojo.UserInfo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
public class UserInfoDAOImpl implements UserInfoDAO {
    Connection conn = null;
    PreparedStatement pre = null;
    ResultSet res = null;
    @Override
    public List<UserInfo> GetAll() {
        try {
            conn = FactoryDB.GetConnection();
            pre = conn.prepareStatement("select * from userinfo");
            res = pre.executeQuery();
            List<UserInfo> list = new LinkedList<UserInfo>();
            while (res.next()) {
                list.add(new UserInfo(
                        res.getInt(1),
                        res.getDate(2),
                        res.getString(3),
                        res.getString(4)
                ));
            }
            FactoryDB.Close(conn, pre, res);
            return list;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public boolean InsertUserInfo(UserInfo info) {
        try {
            conn = FactoryDB.GetConnection();
            pre = conn.prepareStatement("INSERT INTO userinfo VALUES (0,NOW(),?,?);");
            pre.setString(1, info.getUserName());
            pre.setString(2, info.getIntroduce());
            int isf = pre.executeUpdate();
            FactoryDB.Close(conn, pre, res);
            return isf != -1;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
    @Override
    public UserInfo SelectById(int id) {
        try {
            conn = FactoryDB.GetConnection();
            pre = conn.prepareStatement("select * from userinfo where id=?");
            pre.setInt(1, id);
            res = pre.executeQuery();
            //判断查询结果是否为空
            if (res.wasNull()) {
                return null;
            }
            UserInfo u=null;
            while (res.next()) {
                u = new UserInfo(res.getInt(1), res.getDate(2), res.getString(3), res.getString(4));
            }
            FactoryDB.Close(conn, pre, res);
            return u;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public boolean UpdateById(UserInfo info) {
        try {
            conn = FactoryDB.GetConnection();
            pre = conn.prepareStatement("update userinfo set userName=?,introduce=? where id=?");
            pre.setString(1, info.getUserName());
            pre.setString(2, info.getIntroduce());
            pre.setInt(3, info.getId());
            int isf = pre.executeUpdate();
            FactoryDB.Close(conn, pre, res);
            return isf != -1;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
    @Override
    public boolean DeleteById(int id) {
        try {
            conn = FactoryDB.GetConnection();
            pre = conn.prepareStatement("delete from test.userinfo where id=?");
            pre.setInt(1, id);
            int isf = pre.executeUpdate();
            FactoryDB.Close(conn, pre, res);
            return isf != -1;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
}


到此DAO与DAOImpl层封装完毕。


相关文章
|
7月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
644 0
|
8月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
10月前
|
SQL 前端开发 Java
JavaWeb 学习日记案例详解及 javaweb 完整项目案例实战指南
本文介绍了一个基于Spring Boot的JavaWeb企业员工管理系统完整案例,涵盖部门管理、员工管理、登录、异常处理、事务管理及AOP等核心功能实现,结合CSDN相关技术文章,提供详细技术方案与应用实例,适合JavaWeb开发者学习与参考。
622 0
|
10月前
|
Java 编译器 数据安全/隐私保护
Java 大学期末考试真题与答案 含知识点总结 重难点归纳及题库汇总 Java 期末备考资料
本文汇总了Java大学期末考试相关资料,包含真题与答案、知识点总结、重难点归纳及题库,涵盖Java基础、面向对象编程、异常处理、IO流等内容,并提供完整代码示例与技术方案,助你高效复习备考。
970 3
|
11月前
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
302 2
|
11月前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
224 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
11月前
|
算法 Java 数据库连接
2025 最新 Java 面试资料及详细答案整理
这是一份全面的Java面试资料整合,涵盖基础到进阶技术知识点,包括Java核心语法、面向对象编程、异常处理、集合框架、JVM原理、多线程与并发编程、网络编程等。同时深入解析主流框架如Spring、MyBatis,以及项目实战经验分享。资料结合实例辅助理解,助你高效备考,提升面试竞争力。资源地址:[点击获取](https://pan.quark.cn/s/14fcf913bae6)。
1538 6
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
457 0