一、数据库mysql

数据库是一个很庞大专门课程,光是非关系型数据库就有MySQL,Oracle等等,那么我们因为主要是学习Java,因此把最常见的数据库中最常见的操作先拿出来讲一下,这是方便我们现有一个做项目的整体概念。我们拿出来的例子就是MySQL,这也是目前项目中最常用到的数据库。

要学习数据库,必须要说到的两个点就是数据类型及数据库语句。数据类型基本就能说明数据库里面存的东西,数据库语句就是对数据库里面的数据进行操作的方式,主要就是增删改查。

1、对于数据类型,我们在项目中常常遇到的类型有:1、如果存的是数字,常常用int,float;2、如果是时间,常常用DATETIME以及DATE,3、如果是字符或字符串,一般用varchar,4、文本就用text。

2、数据库语句包括DQL、DML、DDL、TPL、DCL、CCL等六种语句,因为有navicat的存在,我们可以对数据库的操作像操作Excel表那么容易,所以看一下navicat就知道怎么创建表、增加字段以及删除表等等。那么我们在项目中动态操作数据库的时候是不能用navicat的,所以这里面有一部分语句我们一开始就要学习会用的。

(1)DML(Data Manipulation Language):数据操纵语言,主要对表记录进行更新(增、删、改)。常见的有insert,update,delete等。项目中,前台或者项目向数据库中写入数据最常用到的就是insert和update。

a、DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句],其中:指定要删除数据的表名;ORDER BY子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除;WHERE子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行;LIMIT子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。

b、UPDATE SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ][ORDER BY 子句] [LIMIT 子句],其中:用于指定要更新的表名称;SET子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值;WHERE子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行;ORDER BY子句:可选项。用于限定表中的行被修改的次序;LIMIT子句:可选项。用于限定被修改的行数。

c、INSERT INTO [ [ , … ] ]VALUES (值1) [… , (值n) ],其中:指定被操作的表名;:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERTVALUES(…) 即可。VALUES或 VALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。这是多行插入的方法,还有一种更精细化一行一行插入的方法。INSERT INTO SET = , = 。

(2)DQL:DataBase Query language 用来查询数据,不会对数据造成变化。把查询的结果发送到客户端进行显示。要说项目中用的最多的,非DQL莫属。

a、查询所有列或者指定列:select * from ;select ,,.. from ;

b、条件查询,通过设置各种条件查询数据,这个是实际项目中最常见的。一般使用where子句、order by子句、group by子句、having子句以及模糊查询中的like。

c、聚合函数:select count(*) from 表名;——查询表的记录数;select sum(列名) from 表名;——查询此列的和;select avg(列名) from 表名;——查询此列的平均值;select max(列名) from 表名;——查询此列的最大值;select min(列名) from 表名;——查询此列的最小值。

二、反射机制

1、反射,JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。如果你想知道反射机制的原理是什么?为啥会有反射机制?建议先弄懂JVM的运行机制,类加载的机制、类对象、类的类以及Class等等,就会自然明白,我们这里只需要知道怎么用就可以了。

2、反射的作用以及用法:在运行时构造一个类的对象;判断一个类所具有的成员变量和方法;调用一个对象的方法;生成动态代理。反射最大的应用就是框架。Java中哪些地方用到了反射机制呢?比如:我们在eclipse里面CTRL+O调查类文件的大纲,就是用到了反射机制,还有反编译也是。那么在我们整个的课程里面,反射主要用在了三个地方:(1)数据库连接的时候,JDBC中通过classForName()创建对象;(2)前端view展现的时候,javaBean和jsp之间调用;(3)spring 框架中的IoC和DI。那么我们会在讲到这几个部分的时候,专门讲反射机制在这其中是如何使用的。

三、JDBC

1、JDBC,(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java编写的类和接口组成。JDBC是一套规范,一套接口,是方便数据库和Java做对接使用的,任何数据库想和Java项目做对接,只要实现JDBC的接口文件,就可以实现连接了。那么我们项目中主要使用的就是MySQL,那么只要在项目中将MySQL提供的连接jar包导入,我们就可以直接使用了,在这里我们使用的jar版本是mysql-connector-java-5.1.34.jar,导入方法是使用Java Build Path:

2、JDBC的使用方法:

(1)常用接口:Statement接口,用于执行静态SQL语句并返回所生成结果的对象;PreparedStatement接口,CallableStatement接口是Statement的子接口,一般使用PreparedStatement接口,因为会有SQL注入的风险。ResultSet接口:就是select查询返回的结果集。

a、Statement常用方法:

execute()方法:运行语句,返回是否有结果集

executeQuery()方法:运行select语句,返回ResultSet结果集

executeUpdate()方法:运行insert、update、delete语句,返回更新的行数,一般情况后面两个常用。

b、ResultSet接口方法有getString(),getDate(),getBoolean()等方法。

(2)运用JDBC里面的类和方法来操作数据库的全过程,我们以select查询为例,因为这个是最常用到的,而且知道一个用法其他都是一样的,因为只有sql语句不一样。

(a)加载驱动类;

(b)连接指定数据库;

(c)获取SQL命令对象,编译和发送SQL语句给数据库;

(d)创建SQL命令;

(e)执行SQL命令;

(f)关闭资源。关闭顺序ResultSet,Statement,Connection。

3、JDBC的封装:完成了JDBC的编程之后,我们发现一些问题,比如的url、user、password这些字符串有可能会变化,我们可以将它们提取出来,创建和编译执行SQL语句我们也可以封装起来,关闭资源也可以封装成一个方法,这些我们可以尝试手动操作,但是知道就可以,因为后面要学习的框架都会解决这个问题。我们在这里着重说一下Properties资源文件。

4、ORM,映射思想

我们这时发现一个问题,如果我们关闭资源之后,再想操作已经查询出来的数据就不行了,因此我们需要把查询的结果不仅是返回到ResultSet,而且要存起来,方便后续Java语句进行操作。这里就要说到一个持久层的概念,持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。如下面将返回数据集存入一个List和Map组成的集合中。

而且还发现进行一次数据库操作就需要六步,即使我们进行了一些封装。这之后出现了ORM,即Object-Relationl Mapping,简单来说它的作用就是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。总体来说就是表结构和类对应,表中字段和属性对应,表中的一条记录和对象对应。这个就是日后项目中最常见的,使用JavaBean封装数据记录。项目中我们现在常用的MyBatis可以直接实现。

文章来源于互联网:JDBC是怎么通过反射机制连接MySQL和Java 13天学Java web开发(7)

发表评论