使用java实现面向对象编程tp09_第1页
使用java实现面向对象编程tp09_第2页
使用java实现面向对象编程tp09_第3页
使用java实现面向对象编程tp09_第4页
使用java实现面向对象编程tp09_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据访问层 第九章 回顾与作业点评回顾与作业点评 如何使用如何使用JDBC连接数据库连接数据库? PreparedStatement与与Statement相比,具相比,具 有什么优势?有什么优势? 提问提问 2/36 预习检查预习检查 什么是持久化?什么是持久化? 主要的持久化操作有哪些主要的持久化操作有哪些? DAO模式由哪几部分组成?模式由哪几部分组成? 提问提问 3/36 本章任务本章任务 使用使用DAO模式实现主人模式实现主人登录登录 使用使用DAO模式实现宠物类型的查询模式实现宠物类型的查询 实现主人领养宠物实现主人领养宠物 4/36 本章目标本章目标 掌握掌握DAO模式模式 掌握分

2、层开发的优势和原则掌握分层开发的优势和原则 使用实体类传递数据使用实体类传递数据 掌握数据访问层的职责掌握数据访问层的职责 5/36 什么是持久化什么是持久化 持久化是将程序中的数据在瞬时状态和持久持久化是将程序中的数据在瞬时状态和持久 状态间转换的机制状态间转换的机制 将大脑将大脑中所思考的事情记录到本子上中所思考的事情记录到本子上, 这个这个过程就是持久化过程就是持久化 6/36 持久化的实现方式持久化的实现方式 数据库数据库 普通文件普通文件 XML文件文件 数据库数据库 普通文件普通文件 XML文件文件 7/36 持久化持久化 读取读取 查找查找 保存保存 删除删除 修改修改 持久化的

3、主要操作持久化的主要操作 8/36 什么是什么是DAO DAO Data Access Object(数据存取对象数据存取对象) 位于业务逻辑和持久化数据之间位于业务逻辑和持久化数据之间 实现对持久化数据的访实现对持久化数据的访问问 列列1列列2列列3 类类DAO数据表数据表 DAO起着转换器的作用起着转换器的作用,把,把 实体类实体类转换为数据库中的记录转换为数据库中的记录 9/36 DAO模式的作用模式的作用 隔离业务逻辑代码和数据访问代码隔离业务逻辑代码和数据访问代码 隔离不同数据库的实现隔离不同数据库的实现 业务逻辑层业务逻辑层 数据访问层数据访问层 数据访问层数据访问层 Oracle

4、 SQLServer MySQL 业务逻辑层业务逻辑层 10/36 DAO模式的组成模式的组成 DAO模式的组成部分模式的组成部分 DAO接口接口 DAO实现类实现类 实体类实体类 数据库连接和关闭工具类数据库连接和关闭工具类 11/36 DAO模式的实际模式的实际应用应用5-1 定义一个接口定义一个接口PetDao public interface PetDao int save( Pet pet ); int del( Pet pet ); public class PetDaoSQLServerImpl implements PetDao public int save(Pet pet)

5、 public int del(Pet pet) ; 接口接口PetDao 实现接口实现接口PetDao 定义定义PetDao接口的实现类接口的实现类 实体类实体类 12/36 DAO模式的实际模式的实际应用应用5-2 PetDao实现类的方法实现类的方法:update()方法方法 public class PetDaoSQLServerImpl implements PetDao public int update(Pet pet) String driver = com.microsoft.sqlserver.jdbc.SQLServerDriver ; String url = jdbc

6、:sqlserver:/localhost:1433; DatabaseName=epet ; String sql = “update pet set status=0 where id=?”; pstmt =conn.prepareStatement(sql); pstmt.setInt(1, pet.getId(); result=pstmt.executeUpdate(); finally if (null != pstmt) pstmt.close(); if(null != conn)conn.close(); 数据库连接信息数据库连接信息 执行更新操作执行更新操作 在在final

7、ly块中关闭数据库连接块中关闭数据库连接 13/36 DAO模式的实际模式的实际应用应用5-3 定义实体类定义实体类Pet类类 包含相关属性包含相关属性 实现属性的实现属性的getter/setter方法方法 public class Pet private int id;/ 宠物宠物id private int masterId;/ 主人主人id private String name;/ 昵称昵称 public int getId() return id; public void setId(int id) this.id = id; 属属 性性 getter/setter方法方法 14/

8、36 DAO模式的实际应用模式的实际应用5-4 PetDaoSQLServerImpl类的各个方法中有数类的各个方法中有数 据库连接的建立和关闭操作,如何解决代码重据库连接的建立和关闭操作,如何解决代码重 复问题?复问题? 如果更换了数据库,各个方法都要修改,如何如果更换了数据库,各个方法都要修改,如何 解决此缺陷?解决此缺陷? 将数据库连接的建立和关闭操作提取到一个专将数据库连接的建立和关闭操作提取到一个专 门类门类BaseDao中,让中,让PetDaoSQLServerImpl 类继承类继承BaseDao类类 问题问题 分析分析 15/36 DAO模式的实际模式的实际应用应用5-4 数据库

9、工具类数据库工具类BaseDao:打开连接与关闭连接:打开连接与关闭连接 public class BaseDao private String driver = com.microsoft.sqlserver.jdbc.SQLServerDriver ; private String url = jdbc:sqlserver:/localhost:1433; DatabaseName=epet ; public Connection getConnection() Class.forName(driver); conn = DriverManager.getConnection(url, u

10、ser, password); return conn; public void closeAll(Connection conn, Statement stmt,ResultSet rs) if(rs != null) rs.close(); if(stmt != null)stmt.close(); 获取数据库连接获取数据库连接 关闭数据库连接关闭数据库连接 16/36 DAO模式的实际模式的实际应用应用5-4 数据库工具类数据库工具类BaseDao:增、删、改的通用:增、删、改的通用 方法方法 public int exceuteUpdate (String preparedSql, O

11、bject param) conn = getConnection(); try pstmt = conn.prepareStatement(preparedSql); if (param != null) for (int i = 0; i param.length; i+) /为预编译为预编译sql设置参数设置参数 pstmt.setObject(i + 1, parami); num = pstmt.executeUpdate(); 演示示例演示示例1:使用使用DAO更新宠物更新宠物 17/36 学员操作学员操作定义定义MasterDao接口和其实现类接口和其实现类 需求说明:需求说明:

12、 创建数据库表创建数据库表 主人表主人表master(id,loginid,password) 宠物种类表宠物种类表pet_type(id,name) 宠物表宠物表pet(id,master_id,name,type_id,health,love, adopt_time,status) 创建数据库工具类创建数据库工具类BaseDao 定义定义实体类实体类Master,与表,与表master 对应对应 定义定义MasterDao 接口接口 创建创建MasterDao的实现类,实现查询方法的实现类,实现查询方法 练习练习 完成时间完成时间:25分钟分钟 18/36 学员操作学员操作调用调用DAO类

13、实现登录类实现登录 训练要点:训练要点: 数据持久化数据持久化 需求说明:需求说明: 完成主人的登录验证完成主人的登录验证功能功能 指导指导 讲解需求说明讲解需求说明 19/36 学员操作学员操作调用调用DAO类实现登录类实现登录 实现实现思路:思路: 1. 开发开发业务类业务类MasterManager 2. 在在MasterManager中检验主人的密码是否正确中检验主人的密码是否正确 3. 开发开发测试类测试类Test,测试登录验证功能,测试登录验证功能 完成时间完成时间:15分钟分钟 指导指导 20/36 共性问题集中讲解共性问题集中讲解 常见问题及解决办法常见问题及解决办法 代码规范

14、问题代码规范问题 调试技巧调试技巧 21/36 小结小结 什么是什么是DAO? DAO模式的作用是什么?模式的作用是什么? DAO是由哪几部分组成的?是由哪几部分组成的? 提问提问 22/36 学校 机械学院 机械制造 汽车工程 人文学院 法律 中文 信息学院 计算机 电子工程 什么是分层开发什么是分层开发 一种化大为小,分而治之的软件开发方法一种化大为小,分而治之的软件开发方法 一所学校被分为若干学院,各学院下面再分若干一所学校被分为若干学院,各学院下面再分若干 专业,这样的分层更易于管理专业,这样的分层更易于管理 23/36 生活中的分层生活中的分层 餐厅餐厅 制造汽车制造汽车 服务员服务

15、员厨师厨师采购员采购员 汽车制造商汽车制造商 零件制造零件制造 商商 炼钢厂炼钢厂采矿厂采矿厂 24/36 分层开发分层开发的特点及好处的特点及好处 分层的特点分层的特点 每一层都有自己的职责每一层都有自己的职责 上一层不用关心下一层的实现细节,上一层通过上一层不用关心下一层的实现细节,上一层通过 下一层提供的对外接口来使用其功能下一层提供的对外接口来使用其功能 上一层调用下一层的功能,下一层不能调用上一上一层调用下一层的功能,下一层不能调用上一 层功能层功能 分层开发的好处:分层开发的好处: 各各层专注于自己功能的实现,便于提高质量层专注于自己功能的实现,便于提高质量 便于分工协作,提高开发

16、效率便于分工协作,提高开发效率 便于代码复用便于代码复用 便于程序扩展便于程序扩展 25/36 分层原则分层原则2-1 封装性原则封装性原则 每个层次向外公开接口,但是隐藏内部细节每个层次向外公开接口,但是隐藏内部细节 钥匙开锁,只知道锁提供的接口,但不知道钥匙开锁,只知道锁提供的接口,但不知道 锁的内部细节。锁的内部细节。 26/36 分层原则分层原则2-2 顺序访问原则顺序访问原则 下一层为上一层服务,但不使用上层的服务下一层为上一层服务,但不使用上层的服务 盖楼时需要先打地基,地基为上层建筑服务,盖楼时需要先打地基,地基为上层建筑服务, 但不使用上层的服务。但不使用上层的服务。 27/3

17、6 使用实体类传递数据使用实体类传递数据 分层结构中,不同层之间通过实体类传输数据分层结构中,不同层之间通过实体类传输数据 业务逻辑层业务逻辑层 数据访问层数据访问层 28/36 学员操作学员操作实现宠物类型的查询实现宠物类型的查询 需求说明需求说明 在上机练习在上机练习2的基础上,实现查询宠物类型和根据的基础上,实现查询宠物类型和根据 宠物名称查找宠物编号功能宠物名称查找宠物编号功能 如果登录成功,则显示宠物类型名称。选择宠物类型后如果登录成功,则显示宠物类型名称。选择宠物类型后 ,显示宠物类型编号。,显示宠物类型编号。 如果登录不成功则不显示宠物类型名称如果登录不成功则不显示宠物类型名称

18、完成时间完成时间:30分钟分钟 练习练习 29/36 共性问题集中讲解共性问题集中讲解 常见问题及解决办法常见问题及解决办法 代码规范问题代码规范问题 调试技巧调试技巧 30/36 学员操作学员操作实现主人领养宠物实现主人领养宠物 训练要点:训练要点: 分层开发分层开发 DAO模式模式 需求说明:需求说明: 在上机练习在上机练习3的基础上,实现主人领养宠物的功能的基础上,实现主人领养宠物的功能 指导指导 讲解需求说明讲解需求说明 31/36 学员操作学员操作实现主人领养宠物实现主人领养宠物 实现思路:实现思路: 1. 定义实体类定义实体类Pet 2. 定义定义PetDao接口接口 3. 定义实现类定义实现类PetDaoSQLServerImpl,实现,实现PetDao 接口的接口的save(Pet pet),完成添加宠物的功能,完成添加宠物的功能 4. 修改主人业务类修改主人业务类MasterManager,编写,编写adoptPet() 方法,实现领养宠物功能方法,实现领养宠物功能 5. 修改测试类修改测试类Test,测试领养宠物功能,测试领养宠物功能 完成时间完成时间:30分钟分钟 指导指导 32/36 共性问题集中讲解共性问题集中讲解 常见问题及解决办法常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论