jdbc:
复习【
dao: 全称 Data Access Object 数据访问对象
设计思想
写程序时 不会 直接去写代码,会 先分析 应用程序的 需求
根据需求 定义 接口(dao) ,主要体现的是 整个程序中的所有功能
com.oracle.dao //接口
com.oracle.daoImpl //接口的实现类
com.oracle.entity //与数据库表对应的实体
com.oracle.tools //工具类
com.oracle.test //测试类
反射(reflect): 还没有用反射 封装 工具类;
什么是反射 ?
反射 是程序在运行时 获取 类的能力的 过程 就是反射; 思想
将java 类 打成 jar包----->.class 文件
字节码形式体现的 ,如果是这样 如何 获取类的结构呢?
java中提供了 一种反射机制 来获取 类的结构:
属性 ,方法, 构造器,静态块儿 ,实例块儿
Class c = Class.forName("com.oracle.util.DBTools"); //获取 反射的一种方法
c.getName();
c.getSimpleName();
c.getField(String name); 获取 指定名字的 属性
c.getFields(); //获取类中的所有公有的属性
c.getDeclaredFields(); //获取类中的所有私有化属性
Field 类:
getName(); //获取属性名
getType(); //获取属性的类型;
getModifiers();获取 当前属性的 访问修饰符 的值
拓展 Field的方法:
重点:
赋值
set(Object obj, Object value); 给属性 重新赋值
取值
f.get(Object obj); 获取指定 属性的值
】
继续反射内容:
1. java中提供了三种 获取反射类Class的方式:
1)Class.forName(""); 这个 不常用
2)类名.class 关键字 ,这种常用
3)创建类的对象 例如
Person p= new Person();
p.getClass();//是 Object类的方法
2. 通过 反射 获取 类中的方法
Method m = c.getMethod(name, parameterTypes); 获取指定 方法
Method[] m = c.getDeclaredMethods(); 获取类中所有的方法
m.getName();获取方法的名字;
m.getReturnType(); 通过反射 获取方法的返回值类型
m.getParameterCount(); 通过反射 获取 方法参数的 个数
m.getParameterTypes(); 返回的是 Class[] 数组
超级无敌重点:
invoke(Object obj, Object... args); 这个 方法 就是通过 反射 来调用 类中的
指定方法 ,其中 第一个参数是 对象,第二个参数是 方法的 实参
3.通过 反射来获取 类中的 构造器
c.getConstructor(类<?>... parameterTypes); 获取 指定参数的构造器 获取一个
c.getConstructors(); 获取 类中的所有构造器 获取多个
重点:
newInstance(Object...parameterValue); 使用指定参数 的 构造器构建一个的实例化对象
Person p =new Person(); 第一种创建对象的方式
newInstance();这个方法 第二种 创建对象的方式
==========================================================================
总结反射 如下:
Class 类 就是反射类
获取反射类的三种方式:
1)Class.forName(""); 这个 不常用
2)类名.class 关键字 ,这种常用
3)创建类的对象 例如
Person p= new Person();
p.getClass();//是 Object类的方法
这个类中 包含了 :
1.属性 Field类
--获取属性 的基本信息 的方法
--给属性赋值, 和 取值的方法(重点);
2.方法 Method类
--获取方法 的基本信息 的方法
--执行、 调用方法的 方法 重点 invoke(Object obj,Object...objs);
常用方法:
getName();获取 类的 全路径名
getSimpleName();获取类 名字 不包括 包名
getPackage(); 获取当前类所在的包
c.getModifiers() 获取 访问修饰符
属性:
Field[] <----- c.getFields(); 获取 类中 所有 公共的 (public 修饰)的属性
Field[] <----- c.getDeclaredFields(); 获取类中 所有 私有化 的属性
int <------ c.field.getModifiers(); 可以获取 类中属性的访问修饰符 用数字代替
c.getType();
使用反射 、和 Field对象 结合以学过的知识点完成 对 插入的 sql 语句的 动态拼接
一下四个方法 必须会用:
************************
newInstance(Object...parameterValue); //使用指定参数 的 构造器构建一个的实例化对象
set(Object obj, Object value); //给属性 重新赋值
get(Object obj); //获取指定 属性的值
invoke(Object obj,Object...objs); //这个 方法 就是通过 反射 来调用 类中的指定方法 ,其中 第一个参数是 对象,第二个参数是 方法的 实参