IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 2021/10/8 Java数据库编程 第九章 数据访问和DAO模式 -> 正文阅读

[大数据]2021/10/8 Java数据库编程 第九章 数据访问和DAO模式

目录

Properties配置文件

DAO模式好处,组成

DAO模式下的代码

DAO中固定的东西,通常:

?本章总结


Properties配置文件

????????Java的配置文件通常是扩展名为.properties的文件,文件中以"键=值"的格式储存数据。在Properties文件中可以用"#"添加注释。通常情况下,为数据库访问添加的配置文件会被命名为database.properties。位于Src文件下如图:

?

DAO模式好处,组成


1.软件开发中的分层开发思想和技术。将一个软件分成多个层次进行开发,化大为小,分而治之,从而缩短软件开发时间,提高软件开发效率。

2.DAO模式使用时:

隔离了数据访问代码和业务逻辑代码。把需要访问的数据库数据在DAO中写出方法,定义参数,在业务逻辑代码中只用调用方法就行。

隔离了不同的数据库实现,因为开始是接囗编程,当数据库变化时,只要把接口的实现类增加即可。

3.DAO组成分为:

DAO接囗,对数据库的操作定义成抽象方法。

DAO实现,针对不同数据库,依接口实现不同方法。

实体类,用于存放,传输数据。

数据连接和关闭的工具类。提高复用。

DAO模式下的代码


以下图为说明:

1.第一个包dao下面的BaseDao通常有数据库的连接,和关闭。比较固定,可以先写,或通用。

2.但我们通常先写实体类,如图的entity包,来存下从数据库获取的信息,一般一张表做为一个实体类。只有这样才能通过实体类来操作。

3.接着通过entity来写Dao接口像图中的:MasterDao,PetDao,内有像从数据库获取相对实体类(查)的方法,更新的方法(增删改)。

4.实现接口,如图Impl包实现,实体类相对应的dao,图中MasterJDBCDao,PetJDBCDao.

5.以上差一多就是一个DAO了,像图上的manager,test,test是调试的类,manager是相关操作常用的类。
?

DAO中固定的东西,通常:

一:BaseDao
public class BaseDao {
?private static String driver =?
? "oracle.jdbc.driver.OracleDriver";// 数据库驱动字符串
?private static String url =?
? "jdbc:oracle:thin:@10.0.0.75:1521:ORCL";// 连接URL字符串
?private static String user = "jbit"; // 数据库用户名
?private static String password = "bdqn"; // 用户密码
?/**
? * 获取数据库连接对象。
? */
?public Connection getConnection() {
? Connection conn = null;// 数据连接对象
? // 获取连接并捕获异常
? try {
? ?Class.forName(driver);
? ?conn = DriverManager.getConnection(url, user, password); ??
? } catch (Exception e) {
? ?e.printStackTrace();// 异常处理
? }
? return conn;// 返回连接对象
?}
?/**
? * 关闭数据库连接。
? * @param conn 数据库连接
? * @param stmt Statement对象
? * @param rs 结果集
? */
?public void closeAll(Connection conn, Statement stmt,?
? ? ?ResultSet rs) {
? // 若结果集对象不为空,则关闭
? if (rs != null) {
? ?try {
? ? rs.close();
? ?} catch (Exception e) {
? ? e.printStackTrace();
? ?}
? }
? // 若Statement对象不为空,则关闭
? if (stmt != null) {
? ?try {
? ? stmt.close();
? ?} catch (Exception e) {
? ? e.printStackTrace();
? ?}
? }
? // 若数据库连接对象不为空,则关闭
? if (conn != null) {
? ?try {
? ? conn.close();
? ?} catch (Exception e) {
? ? e.printStackTrace();
? ?}
? }
?}
}

二:查的方法
XX代表实体类

public List<实体类XX> findXXByTid(int tid) {
? String sqlStr="select * from XX ?where......";
? List<XX> XXsList = new ArrayList<XX>();
? try {
? ?// 1得到连接
? ?conn = baseDao.getConnection();
? ?// 2得到执行对象
? ?pstmt = conn.prepareStatement(sqlStr);
? ?pstmt.setInt(1, tid) ;
? ?//3执行
? ?rst = pstmt.executeQuery();
? ?while (rst.next()) {
? ? XX xx = new XX();
? ? news.setNId(rst.getInt("nid"));.....

.........
? ;
? ? newsList.add(news);
? ?}
? } catch (Exception ex) {
? ?ex.printStackTrace();
? } finally {
? ?baseDao.closeAll(conn, pstmt, rst);
? }
? return newsList;
?}

三.增删改的方法
public ResultSet executeQuerySQL(String preparedSql, String[] param) {
? Connection conn = null;
? PreparedStatement pstmt = null;
? ResultSet rs = null;
? // int num = 0;

? /* 处理SQL,执行SQL */
? try {
? ?conn = getConn(); // 得到数据库连接
? ?pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象
? ?if (param != null) {
? ? for (int i = 0; i < param.length; i++) {
? ? ?pstmt.setString(i + 1, param[i]); // 为预编译sql设置参数
? ? }
? ?}
? ?rs = pstmt.executeQuery(); // 执行SQL语句
? } catch (ClassNotFoundException e) {
? ?e.printStackTrace(); // 处理ClassNotFoundException异常
? } catch (SQLException e) {
? ?e.printStackTrace(); // 处理SQLException异常
? }
? return rs;
?}

因数这preparedSql是可带?的,所以后接String[]

?本章总结

  1. DAO模式是当前非常流行的数据访问模式。
  2. DAO位于业务逻辑和持久化数据之间,可实现对持久化数据的访问。通俗来讲,DAO就是将数据库操作都封装起来,对外提供相应的接口。
  3. 在面向对象的设计过程中,用"套路"解决特定问题,被称为模式。DAO模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离,对外提供面向对象的数据访问接口。
  4. DAO模式的优势在于实现了两次隔离。
    1. 隔离了数据访问代码和业务逻辑代码,即代码解耦。业务逻辑代码直接调用DAO接口中的方法即可,完全感觉不到数据表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码。这降低了耦合性,提高了复用性。
    2. 隔离了不同数据库的实现。采用面向接口编程,如果底层数据库变化,如由MySQL变成Oracle,只要增加DAO接口的新实现类,原有MySQL实现就不用修改。这降低了代码的耦合性,提高了代码的扩展性和系统的可移植性。
  5. 典型的DAO模式主要由以下几部分组成。
    1. 实体类:用于存放与传输对象数据。
    2. 数据库操作工具类:即BaseDao类,避免了数据库连接和关闭代码的重复使用,方便进行修改。
    3. DAO接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现。
    4. DAO实现类:针对不同数据库给出DAO接口定义方法的具体实现??
  6. 使用Properties配置文件可以解决在使用数据库的种类不变的情况下,通过修改配置文件信息避免重复编译工程的问题。
  7. 实体类是在Java项目中与数据表对应的类。
  8. DAO模式通过采用面向接口编程降低代码间的耦合性,提高代码的可扩展性和可维护性。

练习小作业:

  1. 使用Properties配置文件改造HospitalSystem工程
  2. 创建病人检查记录的实体类
  3. 查询病人的检查记录
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:21:04  更:2021-10-09 16:21:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:12:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码