java高级

CH01

一、    如何做自我介绍?

1、      去你女朋友家:家庭情况、做什么工作、性格

2、      面试时:大学、专业、姓名、经验、会什么、为什么应聘

3、      自己:五官、四肢、睡觉、吃饭、学习、写代码、打游戏

或者是介绍一个陌生的事物:

属性和行为:描述属性和行为的时候,要是别人关心的,跟当前环境有关的。

二、    对象

明星的出现,会引起一堆人的追捧,追捧明星的这群人称为什么粉,每一个喜欢这个明星的人都是一个实实在在的个体,这个个体就是对象。

对象是有具体的属性值和行为的一个实际存在的个体。

例如:学生类—就是一个抽象的概念,在这个类里我们就约定学生应该有的属性和行为,但是没有具体数值。

具体到叫张三的这个学生,就是对象了,因为他有了具体的属性值,所以对象具有唯一值。

三、    什么是类

具有相同属性和行为的一类事物的总称,是概念上的定义。

四、    类和对象的关系

在现实的世界中是先有对象的,人们会根据一堆事物的特点总结出它们具有的属性和行为,然后进行分类。

在计算机世界,你就是女娲,先创造类,然后由类创建对象。

一个类可以有多个对象,如果这个类只有一个对象,那么这个类就称为单态类。

五、    抽象类(面向对象的设计过程)

抽象就是说把现实世界中的事物描述到计算机里,同类事物应该写为类,这类事物的属性抽为成员变量,这事物的行为抽为成员方法。

1、      给这类事物起个名字:即类名,为名词,首字母大写。

2、      找出这类事物的属性(客户关心的):即成员变量,为名词,首字母小写,其余单词的首字母大写,符合驼峰原则。

3、      找出这类事物的行为(客户关心的):即成员方法,为动名词,命名符合驼峰原则。

注意:所有的起名都能见名知意,

例:public void insertStudent(Student[] stu)

六、    构造方法

public 类名(数据类型 参数1,数据类型 参数2……){

this.成员属性1 = 参数1;

this.成员属性2 = 参数2;

}

1、      作用:用来创建对象,并且可以为对象的属性赋值

2、      特点

①  构造方法的名字与类名相同

②  构造方法没有返回值,也没有void关键字

③  构造方法是通过new关键字来调用的,普通方法是通过对象名.方法名()来调用。

④  如果你的类没有写构造方法,jvm会提供一个无参的构造方法供你使用,一旦你显示定义了任何构造方法,那么jvm就不再提供这个无参的构造方法,如果你还需要用无参构造方法的话,需要自己显示定义出来,sun建议为每一个类建立一个无参构造方法。一般至少有一个无参的构造方法,一个全参的构造方法。

3、      分类:

隐式的是说,如果一个类你没有写构造方法,那么JVM会给你提供默认的无参的构造方法。

显式的构造方法就是你自己在类中明确定义的构造方法,一旦你明确定义了构造方法后,JVM不再提供无参的构造方法。想用的话必须自己显式定义出来。

 

七、    this关键字

代表当前的,这个,在this出现的方法里,谁调用这个方法,就代表谁。

1、      当局部变量和成员变量同名时,我们需要在成员变量前加this,如果不同名时,this可以省略。

2、      如果需要在一个构造方法里调用另外的构造方法时,需要在此构造方法的第一行写this(实参列表);this()代表本类的其他构造方法。

3、      this他的本意是这个,当前的,一般代表当前对象

八、    static关键字

他代表类级别的,静态的,可以修饰成员变量,可以修饰方法。

class DBconn{

//public void getConn(){};//得到数据库的链接

public static void getConn(){};

}

class StudentDao{

//DBconn conn = new DBconn();

//数据库连接 = conn.getConn();

数据库连接 = DBconn.getConn();

}

class TeacherDao{

DBconn conn = new DBconn();

数据库连接 = conn.getConn();

}

class ScoreDao{

DBconn conn = new DBconn();

数据库连接 = conn.getConn();

}

还有很多类,需要用到DBconn的连接数据库的方法,我们不想每次用到getConn时都先创建对象,那么我们可以把getConn声明为类级别的静态的方法,让它随着DBconn一起加载到,我们在任何地方想用的时候都可以直接通过DBconn.getConn()就可以得到数据库连接。

1、      static修饰成员会随着类一起被加载到内存,我们在用到对象的时候才用类去创建,可以通过类名直接调用。他的存在早于对象。

2、      被static修饰的成员,类的所有对象共享,一个对象改变了static修饰的值,那么通过其他对象调用的话,结果是改变后的值。

3、      static不能修饰局部变量

4、      在普通方法里可以访问static修饰的成员变量,但是被static修饰的方法不能访问普通的成员变量。

九、    方法的重载

同一类中的出现的同名的方法,这种现象称为方法的重载。

1、      方法名相同

2、      参数列表不同,包括参数的个数和参数的数据类型以及参数的顺序。

3、      与方法的返回值无关

十、    final关键字

最终的,最后的,不可改变的,可以修饰类、属性、方法

1、      修饰成员变量时,必须赋初值

2、      修饰局部变量可以没有初值,但是一旦赋值后,值不可再改变。

3、      项目中一般是用他和static来定义常量

public static final String FAMILY = “谢”;

十一、面向对象的三大特征之一:封装

涉及到访问修饰符也称为访问权限或者说 透明度

public:公共的,任意的都可见

protected:受保护的,同包中,不同包中子类可见

friendly:同包中可见

private:私有的,只有自己可见

要求:

类的属性必须私有化:保护数据

对属性提供get和set方法来进行取值赋值

类必须有无参的构造方法和全参的构造方法。

 

封装是一种数据的保护,封装是把属性私有化,我的属性只有我自己能看能改,但是为了与外界沟通,我提供公有的方法,在项目中方法都是公有的。

封装的步骤:

1、      用private关键字修饰成员变量,可见度只在本类中。

2、      用public修饰对成员变量设置和取值的set和get方法。

3、      可以在set或者get方法里对成员变量进行业务控制。

注意:

private:私有的,可见度在本类中

public:公有的,可见度是任意地方

默认的:它的可见度是同包中。

CH02

三、面向对象的三大特征:封装、继承、多态,必须具备三者才能是面向对象的。

四、继承关系的确定,继承的关键词是extends

1、当项目中或者在多个类中看到大量的相同的属性和方法时,我们就要考虑抽象出一个父类,父类里放共同的属性和方法,子类里放自己特有的属性和方法。

2、比如一个系统里出现大量的什么是什么时,我们要考虑继承关系。继承是一种IS A的关系。

3、继承可以在很大程度上减少代码的冗余,提高代码的复用度,也方便代码的维护。

五、理解继承

1、继承来源于生活,又高于生活。

2、生活中一个人只有一个父亲,代码中一个类只有一个父类

3、代码中一个类可以有多个子类

4、JAVA语言是单继承的语言。

六、有个游戏系统,他对用户是采用国籍分类(Chinese、Japan、American)的,那么对于每个国籍的人,他

关心属性:姓名、性别、年龄、学历,

关心行为:游戏得分,吃饭,说话

七、super关键字

1、super代表父类,

2、在子类中,我们可以使用super访问父类的非私有的成员

3、super用的最多的地方是在子类的构造方法里访问父类的构造方法super(实参列表),这句话必须在子类构造方法的第一句。

4、Object类,JAVA类的基类,根类,祖宗类。如果你自己的类没有显示继承来自某个类的话,JVM都默认你继承来自这个类。

八、继承的特点

1、子类继承了父类所有的属性和方法,私有的也被继承了,但是不可见。

2、子类可以拥有自己特有的属性和方法。

3、子类可以覆盖即重写父类的方法,因为父类的这个方法实现的功能满足不了子类的需求了。

4、构造方法不能继承

九、重写override

方法的组成:方法的声明和方法体

其中方法的声明包括:修饰符、返回值类型、方法名、参数列表

方法体:实现方法具体功能的代码

出现的原因:父类的方法满足不了子类的需求了,所以需要在子类中重写方法的功能。

出现的位置:有继承关系的子类中。

特点:方法的声明和父类一样,方法体不同。

十一、         继承的应用

public void buyPet(Pet pet){

//我只是想买一个宠物,但是不知道具体买什么类型的宠物,所以方法的参数写宠物的父类

}

1、      父类出现的地方,子类都可以出现

2、      声明父类,创建子类。=号左边的都是声明,对于引用类型来说,=右边的是创建。

3、      子类展现出来的行为是它重写的

十一、存在继承关系的构造方法的执行顺序

先执行父类,在执行子类,在执行子类的构造方法。

十二、抽象类

1、      为什么有抽象类:项目中的一些类,我们没有必要用它来创建对象,那么我们就可以把它设计为抽象的,抽象类不能被实例化(不能用new关键字来创建对象),他被用来继承,这样我们就可以声明抽象类,创建其子类。

2、      抽象类的内容都是约定好的,共同的一些东西。

3、      用abstract修饰的类就是抽象类。

十三、抽象方法

只有方法的声明,没有方法体,他就是约定了一个功能;

public abstract void Son();

1、      含有抽象方法的类,一定是抽象类

2、      抽象类,可以没有抽象方法

3、      继承自抽象类的子类必须实现父类的抽象方法,如果实现不了,请把自己变为抽象类。

CH05

一、    什么是面向对象的思想?

世间万物皆对象,一切从现实的角度来考虑问题。

例:你想去西藏,你该怎么办?

需要交通工具,比如一辆车

去买车

需要一个司机,你怎么办?

你招聘司机,符合你要求的司机到位后,接下来你干什么?

需要水和食物,直接去超市买现成的水和食物对象

GO

二、    面向对象的特征:

1、      封装

保护数据,把属性私有化,提供对外的公有的方法,方法的执行过程也是被封装起来的,外界只能看到方法的最终的功能

2、      继承

①  JAVA是单继承的语言,即一个子类只有一个父类,但是一个父类可以有多个子类

②  从一个类派生出一个新类,原有的类称为父类,派生的类称为子类。

③  子类拥有父类的属性和方法,子类也可以拥有自己特有的属性和方法。子类还可以重写从父类继承过来的方法。

④  在创建子类时,先调用父类的构造方法,再调用子类的构造方法。

3、      多态

①  同一个事物的不同形态,体现在方法的重载和重写这两方面。

②  子类重写父类的方法,那么在程序中可以声明父类,然后用子类去创建对象,那么调用重写后的方法,就体现出不同的形态。

注意:面向对象语言的优点:

减少了代码的冗余,提高了代码的复用度,方便了代码的维护,易于代码的扩展。

三、    重载和重写的特点

四、    问题:你父亲有个愿望买宝马,你母亲也有个愿望买个别墅。

五、    抽象类的特点

1、      用abstract修饰的类,不能被实例化,只能被继承。如果一个类没有必要创建对象,只用来被继承,那么我们一般把他变为抽象类。

2、      抽象类可以没有抽象方法,但是如果一个类有抽象方法,那么他必须是抽象类

六、    抽象方法的特点:

用abstract修饰的方法,只有方法的声明,没有方法体

七、    为什么要有接口

1、为了解决多继承的问题,因为在类的世界只有单继承。

2、为了让设计和实现分离,接口是设计程序有什么功能,架构程序模块。

3、让程序具有了更好的可扩展性。

八、接口的语法

public interface 接口名{

public static final 数据类型 常量名 = 常量值;

public abstract 方法的返回值 方法名(参数列表);//抽象函数

}

类如果想实现接口:

public Class 类名 implements 接口名{

重写接口名中的方法;

}

注意:接口中的方法默认的都是 public abstract的,常量前的修饰默认是public static final,他们都可以不写。

九、接口的理解

1、接口是一种约定。

设计USB接口的人,不关心将来谁用这个接口,他只关心用我这个接口的设备是否实现了我的约定。

设计USB接口的人,也不关心你将来用这个接口干什么

实现USB接口的设备,展现的功能各不相同。

2、接口是一种能力

你实现了父母的愿望,说明你有这个能力,路人实现了你父母的愿望,他也有这个能力,父母本身关心你怎么实现的吗?不关心实现的细节,只关心结果。

3、      面向接口的编程

不考虑实现,只做约定

关心实现类有何能力,不关心实现细节。

十、抽象类和接口的比较

1、抽象类中可以有自己的成员数据,也可以有非抽象方法。而接口中一般不定义成员数据,所有的方法都是抽象方法。

2、一个类只能继承一个父类,但是可以实现多个接口

3、抽象类体现的是继承关系,是一种 IS A关系,父类和子类直接在本质上是同一种事物。而接口,并不要求实现类和接口有任何的关系,实现类仅仅是实现了接口的约定而已。

十一、关于接口

1、      接口是一系列方法的声明。

2、      接口是继承体系之外的,用于功能的扩展,想扩展就实现,不想扩展就不实现。

3、      接口中的成员可以不写public,默认就是公有的。、

4、      接口不能有构造方法,因为接口只能被类来实现。

5、      实现接口,必须实现接口的所有方法,方法体例可以没有具体的内容。如果没有全部实现接口的方法,那么必须声明自己为抽象类。

6、      类只能有一个父类,但是可以实现多个接口

7、      类与类直接存在的是继承关系,类与接口是实现关系

8、      接口可以继承接口,一个接口可以继承多个接口

CH07

一、    JAVA中的异常处理机制

1、      异常:程序中发生了bug,终止了正常的执行

2、      如果总有程序员处理异常的话,一是代码会非常繁琐,二是人为考虑的不全面。

3、      Sun公司提供了非常强大的异常处理机制。

4、      JAVA的异常处理有5个关键字

二、    try包含可能发生的异常代码

Try{

把可能发生的异常的代码包含进来

}

三、    Catch逮住发生的异常

Catch(异常类   异常对象名){

对异常的处理,一般打印异常信息

}

四、    try-catch的运行情况

1、      try里的代码没有发生异常,程序会正常执行完毕

2、      Try里的代码发生的异常,被Catch住,程序毁正常执行完毕

3、      Try里的代码发生的异常,没有被Catch住,程序会在异常处终止

4、      try里的代码可以发生多种异常,所以try后面可以跟多个catch,发生的异常被一个catch住后,其他的catch不再匹配,因此,我们要把最个性的异常处理放在前面,即先放子类,再放父类。

五、    finally,最后要被执行的,无论发生什么情况,被我包含的代码都可以被执行,除非之前用了System exit(1)--(退出JAVA虚拟机)。

将来的作用:用来回收系统中的资源。

六、    throws,在方法声明处声明这个方法要抛出的异常,可以扔出多个,用逗号隔开。

方法内部的代码不做异常处理,把异常通过方法的声明扔给调用者,有调用者来处理,如果调用者还不处理,继续向外扔。

七、    throw,在方法体内扔出一个自定义的异常。

throw new Exception(“对异常的描述”)

八、    异常的分类

Object

     |---throwable

         |--Error:系统级别的严重错误,一旦发生不可修复

         |--Exception:代码中的异常,程序员可以处理

              |--RuntimeException运行时异常:可以处理可以不处理

              |--编译时异常:必须处理,否则程序通不过编译

九、    常见分类

—RuntimeException

ArrayIndexOutOfBoundsException:数组下标越界

NullPointerException:空指针异常

InputMismatchException:输入类型不匹配

ArithMeticException:除数为0

把数字字符串转换为数字

String s = “123”;

int i = Interger.valuesOf(s);

double.valuesOf(s);

ClassCastException:强制类型转换异常

NumberFormatException:把数字字符串转换为数字时发生异常,即字符串里含有非字符

String str = “abc”;

int i = Interger.valuesOf(str);

SQLException:数据库异常—编译时异常

ClassNotFoundException:类找不到—编译时异常

IOException:文件读写异常—编译时异常

十、    日志记录工具,来记录异常,比较好的工具log4j

CH08

一、    数据在电脑中的存储方式

1、      内存:内存条,以及cpu里的缓存

2、      外存:硬盘、U盘、光盘、网络等等。

说明:我们可以形象的内存和外存称为容器,数据如何从一个容器进入另一个容器?

二、    I/O

1、      JAVA语言提供了强大的IO机制来读取数据

2、      I是输入操作:把外存中的数据读取到内存中。

3、      O是输出操作:把内存中的数据读取到外存中。

三、    数据流

数据在电脑中上传输就像水管里的水一样,从一端流向另一端。

数据流是一串连续不断地数据的集合,流淌在IO水管中。

input stream:从外界(硬盘、文件、网络等)流向内存称为输入流,写进电脑。

output stream:从内存流向外界(显示器、网络、打印机、文件)称为输出流。

四、    数据流分类

字节流:一个字节一个字节的读取数据(一个字节占8位)

InputStream,OutputStream

字符流:一个字符一个字符的读取数据,JAVA采用的Unicode编码方式,一个字符占2个字节。

Reader,Writer

五、    标准的输入输出

System.out:向标准的输出设备(一般是显示器或者打印机)输出数据print 和println.

System.in:读取标准的输入设备(一般是键盘)输入的数据。

System.err:向标准的输出设备输出错误信息。

六、    file文件类

他就是用来描述目录或者文件信息的,并且提供了各种办法对文件进行管理。

构造方法:

File f = new File(“test”);

在当前目录下创建文件对象f

File f = new File(“\\root”);在当前程序所在盘的根目录下创建文件夹对象f

File f = new File(“dir”,”test”);

在指定目录dir(必须实际存在)下创建文件对象f

常用方法:

boolean exists();判断文件或目录是否物理存在,存在未true,否则为false。

boolean isFile();判断是否是文件

Boolean isDirectory();判断是否是目录

File[]  listFile();返回带完整路径的文件对象

String[] list();返回只有文件名的字符串数组

String getName();返回文件或者目录名

String getPath();返回文件或者目录的路径

long length();获取文件的长度。

CH09

一、    数组的特点:

1、      数组的长度是固定的,定义了多少空间,只能放这么多的数据,越界就异常。

2、      数组只能放同种类型的数据。

二、    类和对象

在面向对象的思想里,进行数据通信的载体是对象,对象的属性可以是不同的数据类型,对象本身就保存了大量的数据。

三、    集合类

Java的其他机制:

GC垃圾回收机制,跨平台机制,异常处理机制,泛型机制

集合类:是Sun公司提供的用来存储大批量数据的,并且存储数据的空间会根据数据的多少自动分配,同一个集合类里可以放各种数据类型的数据,他提供了丰富的方法操作数据,在添加方法中add(Object obj)里的参数是Object,那么父类出现的地方子类都可以出现,所以集合类可以放任意数据类型。

四、    集合类的分类

Collection接口

     |--List接口:存放的有序的,可以重复的数据

          |--ArrayList:动态数组,底层是以数组的方式存储数据。

          |--LinkedList:底层是以链表的方式存放数据。

     |--Set接口:存放无序的,不可重复的数据

         |--HashSet:底层是以哈希表的方式存储数据

         |--TreeSet:有序的Set集合。

Map接口:以键Key值Values对的方式来存储数据。

     |--HashMap:键可以为NULL,但只能有一个NULL值,但是值可以有多个NULL。

     |--TreeMap:有序的Map集合

     |--Hashtable:Key和Value都不可以是NULL

五、    List集合的常用方法。

add(Object):向集合中添加元素

remove(int index)、remove(Object o):删除集合中的元素,可以根据集合的下标(从0开始)亦可根据元素的值。

set(int index,Object o):修改下标index 位置的元素o

get(int index):得到下标为index的元素

size():得到集合元素的个数

isEmpty():判断集合是否为空

clear():清空集合中的元素

contains(Object o):判断集合中是否包含o元素

六、    LinkedList的特有方法

addFirst(Object 0):在集合的开头添加数据

addLast(Object 0):在集合的末尾添加数据

removeFirst():删除第一个元素

removeLast():删除最后一个元素

getFirst():得到第一个元素

getLast():得到最后一个元素

七、    Set集合:无序的,不重复的数据。遍历时因为无序,所以只能用遍历器Iterator

八、    遍历器(迭代器)Iterator

Collection接口中有个得到Iterator对象的方法,Collection下面的实现类都实现了这个方法,所以他的下面的每一个集合都可以得到一个遍历器。

1、得到遍历器的代码:

Iterator<E> it = 集合对象.iterator();

2、遍历的方法:

hasNext():判断是否还有下一个元素

next():取出当前元素

3、具体代码:

while(it.hasNext()){

数据类型 对象 = it.next();

}

九、    泛型机制

泛型机制是为了保障数据安全,他的出现,规定了在同一个集合里存放同类型的数据,一旦给集合用上了泛型,那么取数据的时候就避免了强制类型转换。

语法:

集合类名或者集合接口名后加<要放的数据类型> = new集合类名<要放的数据类型>();

1、      约定了在集合中存放的数据类型

2、      避免了取数据时的强制类型转换

十、    遍历集合的三种方式:

1、      for循环:只能遍历list集合

2、      迭代器,可以遍历所有的集合

3、      foreach循环,可以遍历所有的集合

for(数据类型  变量名:存放数据的集合对象名)

遍历数组(String必须是泛型约定过的)

String[] arr = {“a”,”bbb”,”ccc”,”ddd”};

for(String s:arr){

  syso—(s);

}

十一、Map接口:里面的数据都是成对出现的,以Key和Value的方法表示,Key相对于Value的索引。

常用方法:

put.(key,value):以键值对的方式存放数据

remove(key):删除此键值对应的元素

get(key):得到此键值对应的value值

size():得到map集合的长度

keySet():得到集合中所有的键,返回值为set集合

values():得到集合中所有的值,返回值为Collection接口

containsKey(key):判断集合中是否包含此键值

containsValue(value):判断集合中是否包含此值。

十二、Collections类,是一个工具类,提供了很多静态的方法来操作集合。

常用的方法有:

Collections.sort();排序

Collections.reverse();反转

Collections.cop(List m, List n):把n拷贝到m中

十三、final,finally,finalize的区别?

final:最终的,不可改变的,可以修饰类,此类不可被继承;可以修饰方法,此方法不可被重写;可以修饰变量,变量不可二次赋值。

finally:异常机制中的一个关键字,用来做资源的回收,即不管是否发生异常,被finally包含的代码都会执行。

finalize:GC垃圾回收机制的一个方法,在回收没有引用的对象时被JVM自动调用。

十四、Collection和Collections的区别?

Collection是一个接口,包括子接口List和Set。其中List接口是用来存放有序的、可重复的元素;Set接口用来存放无序的、不可重复的元素。List接口有两个实现类,分别是ArrayList类和LinkedList类。Set接口有两个实现类,分别是HashSet类和TreeSet类。

Collections是一个工具类,常用的方法有:

Collections.sort();

Collections.reverse();

Collection.cop(List m, List n);

CH10

一、    问题:

如何保存程序中的数据?目的地:数据库

程序中的数据是瞬时状态,我们要把瞬时数据转化为持久化数据。

二、    怎么在程序中连接数据库

IT界有很多数据库厂商:SQL SEVER,ORACLE,MY SQL

在Java语言 使用,Java要指定连接数据库的规范(接口),告诉各个数据库厂商,你们只要实现了我的规范,程序员就可以在程序中使用你们的数据库。

三、    JDBC规范(Java database connection)

Java语言制定的连接数据库的规范,是一组标准的Java接口和类,这些接口的实现类叫数据库驱动程序,数据库驱动程序有各个数据库厂商提供。

四、    必须要知道的接口和类

1、      驱动程序

有数据库厂商提供的,Oracle的classes12.jar,classes14.jar,ojdbc6.jar

加载驱动的字符串:oracle.jdbc.driver.OracleDriver

2、      DriverManager类:Sun公司的管理各个数据库驱动程序的类。

3、      Connection接口:负责连接数据库,并承担传输数据库的任务,通过DriverManager.getConnection(url,username,pwd)得到。

4、      Statement接口:用于执行静态的sql命令,得到他通过conn.createStatement();

5、      PreparedStatement接口:是Statement的子接口,用来执行动态的sql命令,也称为预编译sql命令。得到:conn.prepareStatement(sql);

在创建它的时候必须提供sql命令,在创建它的同时就把这个sql命令预编译了。

6、      ResultSet接口:用于得到查询结果,即结果集。

五、    Statement接口

这是一个执行静态sql命令的对象,所谓静态的sql语句是说这个sql必须是完整的命令。

使用它的时候是:

1、      先得到这个对象Statement st = conn.createStatement();

2、      调用它的方法来执行sql语句

|--execute(sql):可以执行所有的sql命令,但是,它的返回值是Boolean类型的,所以我们一般不用他来执行select命令。

|--executeQuery(sql):用来执行SELECT命令,返回值是ResultSet类型

|--executeUpdate(sql):用来执行insert,update,delete命令,返回值是int类型,代表了这条sql命令插入了几条数据,更新了几条数据,删除了几条数据。

七、PreparedStatement接口:他是Statement的子接口。

这是一个执行动态sql命令的对象,所谓的动态sql语句是说这个sql在程序运行期间,你可以为他添加参数。

使用它的时候是:

1、      先要把sql命令写好

2、      得到这个对象ps = conn.prepareStatement(sql),在创建这个对象的时候就要把sql预编译进去。

3、      为sql命令中的占位符设置值,根据数据表中的字段的类型来调用相应的方法

number(7):ps.setInt(占位符在sql语句中的位置,要插入的数值)

number(6,5):ps.setDouble(占位符在sql语句中的位置,要插入的数值)

varchar2(20):ps.setString(占位符在sql语句中的位置,要插入的数值)

date:ps.setDate(占位符在sql语句中的位置,要插入的数值)

注意:占位符的位置是自左向右从1开始

4、      执行sql命令

|--execute()

|--executeQuery():执行sql命令

|--executeUpdate():执行insert into,delete,update,返回值为int

注意:因为在创建ps的时候已经把sql预编译进去了,所以在执行相应的方法时,不需要传参数。

八、ResultSet结果集

得到她是通过ps的executeQuery()方法

遍历结果集需要他的next()方法

String sql = “select tname,sex,address from teacher”

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

while(rs.next()){//一是取当前记录,二是向下移动记录,移动后可以判断后面是否还有记录

     rs.getString(“tname”);//可以用字段在你写的sql命令中自左向右的位置,但是一般不用

     rs.getString(“sex”);//rs.getString(2);

     rs.getString(“address”);

}

CH11

一、    数据的状态

瞬时的:程序用来存放数据的变量,随着程序运行的结束就消亡了,没有二次保存或者查看数据的功能。

持久的:保存在某种介质上的,可以长期的被使用。

二、    持久化操作

把数据在瞬时状态与持久化状态转化的机制称为持久化。

例:

瞬时数据:Teacher t = new Teacher(“谢静”,”女”,“1990-09-09”,“济南”);

持久化数据:数据库表中的一条记录1,谢静,女,1990-09-09,济南

把瞬时数据t保存为数据库表中的一条记录

把持久化数据读取为一个Teacher对象

三、    对数据库中的数据所做的操作有哪些?

增删改查

四、    DAO(data access object):数据访问对象

我们把承载对数据进行增删改查操作的对象成为DAO

实际上把增删改查操作封装在一个类里,这个类的对象成为DAO

五、    DAO组成

1、      实体类:对应数据库中的一张表,一般实体类名为表名。表中的字段为实体类的成员属性(属性名和字段名保持一致),数据类型保持一致。这种实体类被称为pojo简单的Java类,纯净的Java类

2、      DAO接口:约定程序对实体类对应着的这张表的操作,操作的对象是表,在程序中是实体类。

3、      DAO实现类:根据需求或者具体的数据库,来完成DAO约定的功能,方法只有sql操作,不能有任何其他的业务逻辑。

4、      数据库工具类BaseDao:封装了连接数据库和关闭资源的操作。

六、    项目中的分层

数据访问层:即DAO层,这一层只和数据库打交道,它可以被其他层调用。

显示层:向用户展示信息,并且会收集用户信息,与用户进行各种交互,将来的项目有HTML或者jsp来承担。

业务逻辑层:进行各种业务逻辑的处理,连接了显示层和数据访问层。

显示层è业务逻辑层è数据访问层

/数据访问层è业务逻辑层è显示层

七、    项目中的各个包的作用,以及类的存放位置

1、      entity包:放实体类,实体类名同表名

2、      dao包:数据访问接口,实体类名+ DAO,例StudentDao

3、      dao.impl包:数据访问接口的实现类,实体类名 + DAO + Impl,例StudentDaoImpl

4、      biz包:业务逻辑接口实体类名 + biz,例StudentBiz,在有的项目中把这个包定义为service

5、      biz.impl包:业务逻辑接口实现类,实现类名 + Biz + Impl例StudentBizImpl

6、      util包:工具类包,放项目中通用的类,有的项目组把这个包叫做tools或者common

7、      test包:因为现在是Java项目,没有前端,这里定义的程序的入口

posted @ 2016-09-25 20:47  为何不跪  阅读(227)  评论(0)    收藏  举报