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层封装完毕。


相关文章
|
1天前
|
Java ice
【Java开发指南 | 第二十八篇】Java封装
【Java开发指南 | 第二十八篇】Java封装
9 0
|
1天前
|
Java
Java 封装
5月更文挑战第5天
|
1天前
|
Java 程序员 应用服务中间件
JavaWeb之过滤器(Filter)与监听器(Listener)
本文介绍了JavaWeb中的过滤器(Filter)和监听器(Listener)概念及其使用。过滤器主要用于拦截和处理Web资源请求,如进行编码设置、权限验证等,它在Servlet之前和之后执行。监听器则监听域对象(如ServletRequest、HttpSession、ServletContext)状态变化,分为创建/销毁监听和属性变化监听。监听器在Web.xml中注册后会在相应事件发生时自动执行,例如用于统计网站访问人数或初始化配置。
|
1天前
|
安全 Java
Java一分钟之-访问修饰符与封装原则
【5月更文挑战第9天】本文介绍了Java中的访问修饰符(public, protected, default, private)及其在封装原则中的应用。理解这些修饰符有助于控制类、接口、方法和变量的访问权限,防止过度暴露内部细节。遵循最小权限原则,合理设计接口,并谨慎使用protected,能有效避免常见问题,提高代码的健壮性和安全性。封装是关键,通过使用private修饰成员变量并提供公共访问方式,可减少耦合,增强系统的可维护性。
13 0
|
1天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
26 4
|
1天前
|
Java
java类、封装、继承
java类、封装、继承
|
1天前
|
SQL Java 数据库
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
17 1
|
1天前
|
JavaScript Java 测试技术
基于Java的汇编课程网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的汇编课程网站的设计与实现(源码+lw+部署文档+讲解等)
19 0
|
1天前
|
JavaScript Java 测试技术
基于Java的在线开放课程的设计与实现(源码+lw+部署文档+讲解等)
基于Java的在线开放课程的设计与实现(源码+lw+部署文档+讲解等)
42 3
|
1天前
|
JavaScript Java 测试技术
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
31 1