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