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

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

开发者学堂课程【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 的查询返回动态实现内容的设置。

相关文章
|
6月前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
227 0
|
6月前
MyBatisPlus-标准数据层CRUD功能制作
MyBatisPlus-标准数据层CRUD功能制作
69 0
|
2月前
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
|
3月前
|
前端开发 Java 应用服务中间件
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
|
3月前
|
安全 Java
建模底层逻辑问题之在建模过程中,知识层和操作层如何区分
建模底层逻辑问题之在建模过程中,知识层和操作层如何区分
|
3月前
|
缓存 前端开发
构建前端防腐策略问题之引入前端防腐层是否总是合理
构建前端防腐策略问题之引入前端防腐层是否总是合理
|
设计模式 Linux C++
C++ 接口和实现分离初步简介
C++ 接口和实现分离初步简介
164 0
|
开发者
数据层设计与开发(数据层工厂类) | 学习笔记
简介:快速学习数据层设计与开发(数据层工厂类)
101 0
数据层设计与开发(数据层工厂类) | 学习笔记