数据层设计与开发(数据层标准实现类) | 学习笔记

简介: 简介:快速学习数据层设计与开发(数据层标准实现类)

开发者学堂课程【DAO 开发实战业务分析:数据层设计与开发(数据层标准实现类)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/399/detail/5164


数据层设计与开发(数据层标准实现类)

 

内容介绍:

一、数据层实现类

二、总结


一、数据层实现类

首先对于数据层而言,它的子类一定要进行数据库的操作,那么一旦要进行数据库操作,必然要使用到 Connection ,但是现在的问题是: Connection 对象取得被DatabaseConnection 类控制着。

由于一个业务层需要进行多个数据层的调用,所以绝对不可能将数据库的打开与关闭处理交给数据层完成,而所有数据库的控制只能够交由业务层处理,因为数据层只需要 Connection 接口就够了。

现在数据层的实现子类名称为MemberDAOImpl,并且将其保存在cn.mldn.oracle.dao.impl 子包之中

public class MemberDAOImpl implements IMemberDAO {

private Connection conn ;

private PreparedStatement pstmt ;//所有的数据库的操作都通过此接口完成

public MemberDAOImpl(Connection conn) {

this.conn = conn ;

}

image.png

public boolean doCreate(Member vo) throws Exception {

String sql = "INSERT INTO member(mid,name ,age,phone,birthday,note)

this.pstmt = this.conn.prepareStatement(sql) ;

this.pstmt.setString(1,vo.getMid());

this.pstmt.setString(2, vo.getName());

this.pstmt.setInt( 3,vo.getAge());

this.pstmt.setString(4,vo.getPhone());this.pstmt.setDate(5,newjava.sql.Date(vo.getBirthday().getTime())

this.pstmt.setString(6, vo.getNote());

return this.pstmt.executeUpdate() > 0 ;

}

public boolean doUpdate(Member vo) throws Exception {

String sql = "UPDATE member SET name=?, age=? , phone=?, birthday=? , note=? WHERE"

this.pstmt = this.conn.prepareStatement(sql) ;

this.pstmt.setString(1, vo.getName());this.pstmt.setInt(2,vo.getAge());

this.pstmt.setString( 3,vo.getPhone());l

this.pstmt.setDate(4,new java.sql.Date(vo.getBirthday().getTime())

this.pstmt.setString(5,vo.getNote()); I

this.pstmt.setString(6,vo.getMid());

return this.pstmt.executeUpdate() >0 ;

}

public Member findById(String id) throws Exception {

Member vo = null ;

String sql = "SELECT mid, name, age, phone,birthday , note FROM member

this.pstmt = this.conn.prepareStatement(sql) ;

this.pstmt.setString(1,id);

ResultSet rs = this.pstmt.executeQuery() ;

if (rs.next()){//如果有数据返回则进行对象实例化

vo = new Member() ;

vo.setMid(rs.getString(1));

vo.setName(rs.getString(2));

vo.setAge(rs.getInt(3));

vo.setPhone(rs.getString(4));

vo.setBirthday (rs.getDate(5));

vo.setNote(note);


二、总结

实际上如果按照以上的方式编写代码虽然可以实现功能,但是代码的操作的重复性太高。

可以适当的利用反射并且结合 JDBC 的查询返回动态实现内容的设置。

相关文章
|
存储 算法 安全
PKCS#1、PKCS#5、PKCS#7、PKCS#8到底是什么?
PKCS#1、PKCS#5、PKCS#7、PKCS#8到底是什么?
2526 0
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
622 8
|
8月前
|
数据安全/隐私保护
基于爬山法MPPT和PI的直驱式永磁同步风力发电机控制系统simulink建模与仿真
本课题研究基于爬山法MPPT和PI控制器的直驱式永磁同步风力发电机(PMSG)控制系统,完成Simulink建模与仿真。系统无需齿轮箱,效率与可靠性更高。爬山法MPPT通过调整发电机转速实现最大功率跟踪,PI控制器用于调节系统输出以接近期望值。采用MATLAB2022a进行核心程序开发与模型搭建,仿真结果完整且无水印。该控制策略可有效提升能量转换效率及系统稳定性,适用于不同风速条件下的风力发电场景。
|
10月前
|
监控 供应链 搜索推荐
亚马逊商品详情接口(亚马逊 API 系列)
亚马逊作为全球最大的电商平台之一,提供了丰富的商品资源。开发者和电商从业者可通过亚马逊商品详情接口获取商品的描述、价格、评论、排名等数据,对市场分析、竞品研究、价格监控及业务优化具有重要价值。接口基于MWS服务,支持HTTP/HTTPS协议,需注册并获得API权限。Python示例展示了如何使用mws库调用接口获取商品详情。应用场景包括价格监控、市场调研、智能选品、用户推荐和库存管理等,助力电商运营和决策。
645 23
|
前端开发 UED 开发者
React 日期选择器 Date Picker
本文从React的角度探讨了日期选择器的使用方法,包括使用`react-datepicker`库的基本配置、自定义样式、国际化设置、常见问题及解决方案,旨在帮助开发者构建用户友好的日期选择组件。
432 12
|
存储 人工智能 关系型数据库
MySQL 8.0 字符集与比较规则介绍
我们都知道 MySQL 8.0 与 MySQL 5.7 的区别之一就是默认字符集从 latin1 改成了 utf8mb4 ,除此之外,MySQL 8.0 下的字符集和比较规则还有没有其他变化呢?本篇文章我们一起来学习下。
913 1
|
算法 Python
群智能算法:【WOA】鲸鱼优化算法详细解读
本文详细解读了鲸鱼优化算法(WOA),这是一种受鲸鱼捕食行为启发的新兴群体智能优化算法,具有强大的全局搜索能力和快速收敛速度。文章分为五个部分,分别介绍了引言、算法原理、主要步骤、特点及Python代码实现。通过模拟鲸鱼的捕食行为,该算法能够在复杂的优化问题中找到全局最优解。
|
Python
Python中的全局变量和局部变量是什么?
在 Python 中, 全局变量与局部变量在作用域及访问权限上有着明显区别。全局变量在整个程序范围内均可访问, 如定义 `global_var` 并在函数 `func_using_global()` 内使用。局部变量仅在其定义的函数内有效, 如 `func_creating_local()` 中的 `local_var`, 在函数外访问会引发 `NameError`。
386 3
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)
327 0
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)