DAO类下的各种关系可以用一张图来表示。

1.DAO类介绍:

1.介绍
1) DAO=DataBase Access Object; 数据库操作对象
2) 在一个DAO类中封装针对某张表操作细节
3) 在项目中所有的DAO类都应该存放在dao包
4) DAO类命名规则 = 表名+Dao DeptDao/EmpDao

例如这样一张表。

1.实体类介绍:
一个实体类用于描述一张表的结构
2) 实体类的类名应该与表名相同的
dept.frm-------- Dept.class
3) 实体类的属性名应该与表中字段匿名相同
DEPTNO INT private Integer deptNo
DNAME VARCHAR private String dname
LOC VARCHAR private String loc
4)一个实体类的实例对象用于描述表文件一行数据
dept.frm
deptno dname loc
10 Accounting xx
20 Sales BOSTON
Dept dept1 = new Dept(10,‘Accounting’,‘xx’);
Dept dept2 = new Dept(20,‘Sales’,‘BOSTON’)
2.实体类作用: 实体类降低DAO类开发难度
1.有效减少Dao类中方法参数个数,
降低方法开发与使用难度
2.有效减少Dao类与ResultSet操作难度

/*** 实体类属性的数据类型必须都是高级引用类型,目的方便存储null值* 2021/1/23*/
public class Dept {private Integer deptNo ;private String  dname;private String  loc;public Integer getDeptNo() {return deptNo;}public Dept setDeptNo(Integer deptNo) {this.deptNo = deptNo;return this;}public String getDname() {return dname;}public Dept setDname(String dname) {this.dname = dname;return this;}public String getLoc() {return loc;}public Dept setLoc(String loc) {this.loc = loc;return this;}public Dept(Integer deptNo, String dname, String loc) {this.deptNo = deptNo;this.dname = dname;this.loc = loc;}public Dept() {}
}

基于功能封装—JdbcUtil
1.什么是功能:
一行命令就是一个功能.比如 int a =10
2.JDBC开发流程:
1) 建立一个连接通道
2) 创建一个交通工具
3) 推送SQL命令并得到处理结果
4) 销毁资源
3.JdbcUtil作用降低DAO类开发时,使用JDBC技术难度

ReflectUtil

public class ReflectUtil {/**  作用:动态生成INSERT语句**  insert语句结构:**  insert into  表    (字段名1,字段名2,字段名3) values(值1,值2)*  -----------  --    ---------------        ---------------*       1        2           3                     4**   问题1:如何能够得到表名*         实体类的类名应该与对应的表名相同**   问题2:如何得到表中字段名*         实体类的属性名应该与对应的表中字段名相同**   问题3:如何得到要插入的数据行*         一个实体类的实例对象封装表文件中一个数据行*/public String  createInsertSql(Object instance)throws Exception{String tableName = null;Class classManager = null;Field fieldArray[]=null;StringBuffer columns = new StringBuffer(" (");StringBuffer sql = new StringBuffer("insert into ");StringBuffer values = new StringBuffer(" values(");classManager= instance.getClass(); //得到实例对象,隶属的类文件的管理者fieldArray = classManager.getDeclaredFields();//1.得到插入语句关联的表名tableName = classManager.getSimpleName();//2.得到插入语句关联的字段名for(Field field:fieldArray){String fieldName = field.getName();//得到管理的属性的名称,这个名称就是字段名if(!columns.toString().equals(" (")){columns.append(",");}columns.append(fieldName);}columns.append(")");//3.得到插入语句对应的值for(Field field:fieldArray){field.setAccessible(true);Object value = field.get(instance);//如果添加的值不是第一个值,则在值添加的到StringBuffer之前,先添加一个","进入到StringBufferif(!values.toString().equals(" values(")){values.append(",");}values.append("'");values.append(value);values.append("'");}values.append(")");//拼接sql.append(tableName);sql.append(columns);sql.append(values);return sql.toString();}

详解DAO类(数据库操作对象)相关推荐

  1. PHP面向对象编程详解:类和对象

    PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没 ...

  2. 详解 Visual C# 数据库编程

    详解 Visual C# 数据库编程 ****** 2007-11-05 14:34 关于数据库编程,微软提供了一个统一的数据对象访问模型,在Visual Studio6.0中称为ADO,在.NET中 ...

  3. oracle首先创建三个表,oracle理论学习详解及各种简单操作例子(初学者必备)

    oracle理论学习详解及各种简单操作例子(菜鸟必备) 1.数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2.关于数据库的概念 DB:数据库(存储信 ...

  4. 详解 Python 源码之对象机制

    在Python中,对象就是在堆上申请的结构体,对象不能是被静态初始化的,并且也不能是在栈空间上生存的.唯一的例外就是类型对象(type object),Python中所有的类型对象都是被静态初始化的. ...

  5. ❤️导图整理数组6:四数组的四数之和,详解Counter类实现哈希表计数,力扣454❤️

    此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), ...

  6. java源码详解——String类

    java源码详解--String类目录: Java String 类 下面开始介绍主要方法: Java charAt() 方法 Java compareTo() 方法 int compareTo(St ...

  7. 详解:MySQL数据库的权限管理和运维实操

    详解:MySQL数据库的权限管理 一.MYSQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行updat ...

  8. 【无标题】类模板详解\n类模板的定义及实例化\ntemplate\u003Cclass 模板参数>\nclass 类名 {\n // 类定义\n};\n\ntemplate\u003Ctypen

    类模板详解\n类模板的定义及实例化\ntemplate\u003Cclass 模板参数>\nclass 类名 {\n    // 类定义\n};\n\ntemplate\u003Ctypenam ...

  9. 类模板详解\n类模板的定义及实例化 模板参数

    类模板详解\n类模板的定义及实例化\ntemplate\u003Cclass 模板参数>\nclass 类名 {\n    // 类定义\n};\n\ntemplate\u003Ctypenam ...

  10. 百家号 python高手养成_【一点资讯】Python使用PyQt5进行图形界面GUI编程之详解QWidget类的坐标体系 www.yidianzixun.com...

    Python使用PyQt5进行图形界面GUI编程之详解QWidget类的坐标体系 上篇内容,我们详细介绍了使用PyCharm中LiveTemplate功能快速输入一个GUI应用框架的办法.(参见学会这 ...

最新文章

  1. SQL Server 数据库备份
  2. python pip whl 安装
  3. python-01实现考勤表添加与删除
  4. 5GS 协议栈 — GTP 协议族
  5. JAVA入门[17]-ControllerAdvice处理exception
  6. 步入2021,大热的GNN会在哪些应用领域大展拳脚呢?
  7. ppt格式刷快捷键_普通人 | 4个我在知乎上都没有见过的PPT实用技巧
  8. python脚本常见包_python之各种包
  9. HDU 2689 POJ 2299 树状数组 + 离散化
  10. python测试代码运行时间_在Python中准确地测量代码执行时间
  11. java静态类堆栈_Java回归学习-面向对象内存分析-堆栈
  12. k3修改服务器,金蝶k3客户端修改服务器地址
  13. oracle查询语句大全 oracle 基本命令大全
  14. 评价系统海量数据存储设计
  15. 安装Ubuntu系统时硬盘分区最合理的方法
  16. Word2016怎么插入页眉页脚?Word2016页眉页脚添加教程
  17. 使用Docker部署ONLYOFFICE Document Server
  18. Java 标准 I/O 流编程一览笔录( 下 )
  19. HNOI 2015 【亚瑟王】
  20. UE4 3DUI Widget半透明渲染模糊和重影问题

热门文章

  1. java游戏貂蝉_血战三国之吕布貂蝉
  2. 设计网站如何提高版式的设计水平?
  3. 数据库方面是知识和实战
  4. 365投票抽奖助手V4.5.95版本小程序源码|前端+后端完整源码
  5. 需要一个红警2的易语言源码
  6. 进入Tokio的异步世界
  7. 智能电视机顶盒开发记录
  8. GPS卫星同步时钟系统(北斗授时服务器)的技术研究
  9. 慧编程python硬件_什么是慧编程?慧编程介绍
  10. 国内Linux各版本占有率,Linux市场占有率知多少?