00:00
大家好,上节课呢,我们做了一个用户添加的界面,仅仅做了一个界面而已,那我们看一下我们的一个流程,给大家画个图。看一下。我们这里做了一个户的。我们命名是爱的。三号线优点。用户添加界面了,界面里边数据表单按钮,我们在一提交的时候。输入完表单一提交的时候,我们转向哪了呢?转向了一个文件。这里面是我们的文件。这我们叫做。不。User a。这个是注解的方式,我们请求这个页面,那文件名呢叫做度。User a这类的是这样的一个类,拉到这个类里边,我们在这类里边有几个步骤,接收参数,然后添加到数据库,然后转向,那添加到数据库呢,我们还需要再分层,而不是直接在这个文件里写,你想象如果连接数据库的所有的步骤,那每一个文件里都写链接,将来改用户名密码对吧?改数据库的用户名密码,或者是我们重新项目移植,那多麻烦呢,所以呢,我们需要。
01:17
把用户处理的单独写一个service,一个服务,专门处理用户的增删改查的一个服务。这块一个service。那这个助理服务呢,我们就叫做,呃,叫做。上一点点。LM。O。Monk。这个咱们还没涉及到。出发不?K。喂,嗯。我们叫做呃,用户。
02:03
我们就是这个O,专门处理用户的。呃,服务层专门是处理用户服务的,叫做user do,用这个我们做用户的,呃,服务。那这个服务呢,里边呢,就是增删改查和页面里边,那增删改查呢,它需要一个。底层的。一个do文件,咱们都知道。数据访问对象,咱们在这个数据访问对象里面,也就是这个里面。咱们专门做连接和关闭数据库,以及执行一些通用的词库语,对,当然了,数据库以后的操作,咱们后期会框架,会框架啊,专门是干这个事儿的,那咱们现在只能是模拟这个写用的呢,只是sol,咱们传统的JDBC的方式咱们去写,所以呢,我们DA里边一些执行连接和关闭和基本的操作会返到这里边,然后呢,我们通过这个处理这个添加的动作,会从这里边找一个插入的方法,然后插入方法再返回来,返回来这里边我们如果是添加失败,我们再回到这个添加页面,如果添加成功,我们再回到列表页面。
03:11
再回到用户管理页面,爱着下划线。user.jsp再回到这个页面,当然这后期我们会用so来做,会改名,这就是我们一个执行流程,现在呢,我们写了,写完了添加页面,也写了部分这个sol专门做控制器一个动作,我们用一个sol就可以,然后呢,Soull,我们现在需要写这个服务层和DA,那我们现在需要写的先写这个do。数据库的一些基础的一些设置,我们先把所有的都关掉,再一个一个打开,这样的话大家看到会清晰一些,首先呢,我们会在这块新建一个。这个不是类的,我们就是通的一个G类类。呃,包名,包名呢,我们叫做com.R。点呃Bao这个包那类名呢,我们叫做叫做呃BA,呃DAO吧。
04:05
地沟。好。我们建一个这个,那我们在这里面主要写的几个方法,那就是呃连接。呃,有一个是呃连接的方法,呃,当然了,返回的是肯定是连接的对象。比如说盖一个连接的方法,然后呢,我们还在这里面需要写一个。呃,有连接当然了,离不开的就什么,就是关闭对吧,有连接我们就有关闭,那我们。关闭我们就不用这个数据。关闭,我们关闭所有的。这样才可以,然后还有一些通用的词汇语句,比如说我们在执行增删改查的时候,只查它返回的是结果集,而增删改,增删改这样的数据呢,我们用的呢,都是比如insert update delete这些呢,都是用的差不多的一个语句,那我们直接用一个通用的就行了。
05:04
呃,Public,呃。先比如返回了成功,就是插入的条数啊,更新的条数啊,删除条数对吧,我们叫做E呃。E e tu,比如说I insert update delete这样的方法。你就这个证就可以了啊,就连接有这个,那每一次连接连接的步骤呢,我们最好是用单派的这样的工厂的这样的一个设计模式那。使用单态的这样的一个设计模式,不然的话我们每次用户调一个插入的方法,调一上的话,我们就连接数据库,那肯定不太限制,所以我们用静态代码块做去处理,这是写GBC的基本上的一个呃,标准的一个一个步骤,对不对,然后在这里边我们去呃处理加载这个驱动。价格驱动。那看一下我们现在用的是买CIRCLEQ8,那买CQL8加载驱动的方式,这连接的方式跟其他的是不太一样的,我们看一下有哪些变化。
06:09
我百度搜一下。买Q8接地BC。啊。GD的连接买四八连接方法,嗯,随便点一个吧,大概没有介绍,因为这都比较用的。啊。接地地区。我你看啊。在写JDBC的时候,这里面。诶,有了看一下。你看驱动这是这种方法,是以前的这个驱动。看到了吧,首先要换驱动。用这个。那现在呢,换成这种驱动。换成这个西街的这样的一个。不光是驱动变了,那我们在连接的时候,连接的时候也一定要加上这个。
07:01
把SSL连接的方法变成甲,因为它连接方式,呃,咱们在连接数据库用那个那的时候,咱们也也遇到过了,对吧,所以把那个连接方式给改变。所以这两个地方是需要改的,不然的话你容易出错,那么我们就按这种方式来试一下。来打开我们的。首先呢,我们需要用到这个,呃。用到这个。第二。For name。使用它,我们连接这个指定这个驱动。那这个呢,是加载到把这个驱动加载到我们的什么驱动。啊,接下来的时候呢,就会执行其中的静态这个初始化,完成所有的初始化的这个工作,这块我们需要。端过来吧。用这个。加上这个驱动。当然了,这块有一个错误,首先呢,我们这块没有包,对不对,那我们还得需要加载,呃,一把打上。
08:05
把这个异常给处理掉就可以了,但是这个驱动我们得去下载。我们找到。最新找到我们对应数据库版本的原材料里边。知道吧。呃,买三驱动点击看一下,直接到了就可以到了这个驱动的这个地方,那我们现在的驱动呢是呃,数据库的版本是。看一下我们的数据库版本。没错。
09:02
退出吧。我们,嗯。重新点一下。这个页面我们我们那啥吧。MY放放屁。做环境。12345。八点,所以我们这找下八点不是最新的。8.0,我们这里边下载一个驱动,找一下包,2019年3月20就这个吧。这个赛德曼。等待一下。好,我们看一下再完成保留。我的驱动我们考到我们。
10:02
啊,这就是我们下载的这个驱动,那这个驱动怎么安装呢?有几种方法,一种呢是从Windows下面。看到这儿了吗?找到属性,然后呢,我们在这里边从Windows里边找到这个属性之后,我们需要找到这个Java的构建路径。对不对,不是从这。从我们需要把它加到。呃。这个下边。右键。这里边。Pass,配置pass。然后选择library这里边,然后添加扩展包。找到我们。呃,下载的这个文件。这块添加起来,这是一种方法,但这种方法呢,不一定能,不一定能找得到,另一种方法呢,我们直接把这个文件。最好的方法是直接复制到我们。
11:04
啊。直接复制到这个下面,这样的话你就可以找到这个大包了。好。那接着我们继续驱动已经加载完了,加载完驱动之后,下一步我们就需要是连接数据库。连接数据库呢,我们这块。因为是写在静态大模块里了,所以这个方法呢,我们一定要用到,呃,静态的方法。我们需要。宝宝。用到了哪个方法都需要打包。这都打了没问题。这里边现在是没有反馈类型,我们现在还没有做这个反馈类型,那我们先建一个连接对象。创建一个。连接对象。Conc d,然后呢,C先让他短工。
12:03
然后我们连接上呃使用是呃驱动管理。呃,驱动driver driver driver。使用这里边儿的得到连接。去管理,当然这个连接我们这块需要一个周串一个很长很长的周,我们刚才查到这个里面。嗯。确保这里边的USL等于,然后我们改变一下我们的数据库是。So。确定一下。确认下是不是。蒙。本机连加接C买口接驱动买口,本机连接336用户。然后等于甲失去一个利息密码。
13:06
密码是1234。这里面你设置什么密码,你在这块就输入什么什么密码。无数。一个参数。没问题。添加。异常。因为连接这块,它会有那个连接异常,所以呢,我们得把这个呃异常加上。没有错误了,然后他现在这个错误是需要返回一个对象,那我们在这块再返回。这样的话,连接的方法我们就做完了。那连接方法做完之后,那我们看有了连接,我们其实就可以执行四个宇宙了,那增删改查增删改除了,那我们都可以用这个,呃,这个去执行,那里边比如说我们传两个参数,一个是执行字符串的SQ语句。
14:12
一个是参数,因为我们是用这个预处理的方式,防止销售注入,所以呢,我们这块预处理呢,需要存对象。那我们做一个对象的数组,然后参数。这是固定的一种写,基本上都是固定的一种写法。Con等于腰,如果执行成功,那我们就返回执行影响的函数,那我们先做一个力量接受它。执行成功,那我们获取这个连接对象。等于我们。本类里边。里边有个get新闻连接,就是刚才咱们做的这个连接的这个方法,我们获取到这个呃连接。那有了连接了,那我们执行思维语句肯定得先有一个准备声明的一个这样的,呃,一个语句来执行思维语句,那我们先说明一下,用P。
15:06
哦。先准备一个。哦,准备生证。去执行。那准备设尾卷,我们使用的是呃,接DBC里边的pre啊,准备preps等于我们先生明一个空,然后再一个一个处理。哦。然后使用这条语句,我们去使用它准备一条语句,通过连接对象,我们这个对象里边,我们得通过这个连接对象里边的。准备声明的这个语句,通过它执行这个社会语句,但是这S句有可能是这样的,比如说。Insert into插入这个表user里边,比如说几个几个字,几个几个字段啊。逗号隔开的,然后然后问号问号问号,而这个问号呢,我们需要绑定,需要绑定的就通过它把那个值和问号完定,这个问号呢,相当于占位符对应前面几个字段占位几个符号,所以呢,需要通过这个对象和问号绑定,然后我们再执行是这样的一个步骤来完成的。
16:15
拆开处理一下异常。那我们准备好了这个,呃。一个一卷。通过他声明他预处理。准备这个语句,准备好这个语句,那我们第二步需要什么?需要绑定参数,因为我们有可能有多个多个问号,那我们绑定的参数呢?使用通过是这个方法准备宇宙里边的set object。那第一个参数呢,就是我们在第几列,第一列比如说绑定一个对象。绑定那个参数。第二列参数。那我们有可能有多列,就看我们对象里边传几个参数,我们就把那几个参数,所以这块我们需要用到一个循环,用到一个负循环吧,我们在这里边使用in ti等于零,从零开始循环,循环多长的I小于使用它那个参数多长。
17:07
No。然后爱加加。然后循环一次,那这里边呢,呃,我们从一开始不是从零开始,所以呢得I加一从这开始,那参数呢,就是这里边每一个参数pas里边的。嗯,哎。每一个参数循环这样去绑定,光绑定了不行,那我们还需要干嘛呀,我们还得执行。有了准备好了搜后语句,将问号占位符用参数绑定了,绑定之后我们必须得执行才可以。执行啊,我们。呃,就在这些吧。呃,执行exe,呃,啊。EXECUTE。好,直行没到一对。
18:03
那执行完咱们需要呢,已经准备了,咱们插入数据都可以了,然后呢。哎,这有一个异常返回类型是整数,那我们执行完返执行完之后看一下。我们返回影响的行数。前面我们做了T返回营养的函数,然后我们的最下边。这样的话,我们就把。执行完了,一。在这块默认是零行零,那假如说我插入两条语句,那这块返回两个,更新了两条语句,返回的是二,就这样。好,没有错误返回。那我们这里边有连接了,它是一个站的资源,不能一直在这连着呀,对不对,有准备四个语句这块吧,对吧。有这个对象,然后呢,我们还有什么。嗯,还有准备一坠这两个,我们需要把这两个还有结果机,如果有结果机的话,我们需要把结果机关掉,但这里边我们没用到结果机,但是我们在这呃其他地方有可能用到,所以我们这个关闭的方法里边我们多关闭几个,把那个带结果集的我们也把它呃关闭掉。
19:15
当然这个方法里边用的结式静脉方法。我们把这些方法都声明为静态的,防止出错。不生明方法以后可能错。那这个我们也称为静态方法。那关闭的,关闭的步骤呢,很简单,也就是呃,如果我们得先判断这个资源,如果是空的话,我们就不用关闭,对不对,那这资源哪来的呢?通过参数传传过来的,比如说我们传一个结果机re啊,Su result set,结果机RS传一个。啊。一出一对。呃,假如说叫再传一个连接对象。
20:01
这三个,我们把这三个关闭掉啊,需要我们一个一个判断。搞过了。如果结果集不等于空,也就是是连着的,那么我们需要把结果极点。我没掉。如果。这个理。不等于功。那我们需要把这个。预处理对象。我的。还有,如果连接对象不等于空。没有关闭,那我们再把迎接对象关闭掉,把这三个关闭掉就可以了。但这三个。需要有异常去处理,那我们再开始。把这几个都放到一起。
21:12
这样的话第三个就都可以下。调整一下代码结构。好。那我们像比如说我们执完这个宇宙,把宇宙执行完了,我们关闭掉,那不管呃拆开始发开异常,我们都执行这个关闭,因为都有连接嘛,不管进行成不成公式都有连接,都需要关闭,我没有啊。我们在这里边直接关闭,有直接调用这里边儿的。第二。好,把这三个掉。一的。哦。第一个我们。我们就可以了。
22:00
好,这就是标准的,呃,基础的do的一个写法,这个写法比较固定啊,这只是重复一下,前面呢,咱们也已经写过,那按照咱们这个。Do已经写完了,那我们需要创建一个什么?创建一个。呃,Service服务层专门处理什么呢?专门处理用户的增删改查,那我们就需要专门建一个这样的一个服务层来完成用户的一个资源查,那我们同样。呃,把所有的服务层进到一个一个包里吧,那我们打开这个。嗯。这。右键新建也是类,不是类啊,一类名了,我们就叫做。Com点,呃。R。把它做成服务层,当然了,你直接写在里面也是可以的,那我们单独给出。来控制,那这个呢,我们就叫做用户的,呃,那我们就把它叫做配吧。
23:07
Us用户DA。我们叫的这个里面。现在呢,我们需要用到刚才的那个类里边啊。来看一下,我们在写插入用户的时候,处理用户添加的时候。我们这里边需要调用一个方法,在这块加入到数据库的一个方法中,那比如说我们在这块就需要调用到这个服务层,那我们在这里边需要一个插入数据库的方法,那我们就做一个插入方法,就用计算方法吧。音色插入。只要我们一个用户的对象。传一个用户的实体对象就行了,L。打包只需要把实体这个用户对象一扔进来,这里边就把它插入到四科语句里边,那我们做一个这样的一个四个语句。
24:01
等于。等一下insert into插入到哪里边呢?插入到嗯。L。呃,L monl下边的user用户里边的。值。是什么呢?插入用户所有的字段都插入,那我们查查看这里边几个字段。呃,B。ESC。优势。一俩三四,第五个是生日。五六七八九十一二三四五六七八九十一共十行十个字段,那我们需要十个问号。一个。两个三个四个五个六个。
25:04
七个八个九个十个。十个,那其中呢,这里边我们需要把这个这里边有日期,我们日期存的是date time,我们需要把date time123,第五一两三四,第五个我们需要呃用数据库四个语句里边对么?这样的把格式给它格式化一下才可以。1234第五个这个我们使用呃点D日期格式化O。Four格式化成什么样的呢?主要是化成,呃,比如说我们就要年月日吧,百分号大为年是吧,百分号呃小M月百分号呃小D日期,这个大家不理解的话,可以看一下这会语句,这个语句里边的函数格式化的要通用的啊,把这个改成这种格式,再插入到数据库,那这样S句。
26:00
哦,我们就做完了四个语句做完了,那我们用什么来执行这个四句呢?我们用BASE里边有一个。通用的执行思路语句了,就把这个思语句往这一放就执行了,那第二个参数呢,它需要一个参数。对,不错,我们打勾。啊,进来了,这会写完之后就进来。那我们需要第二个参数,第二个参数什么呢?就是传的什么这个用户的这个对象,但是用户对象呢,我们需要呃。在这个这个数的这个对象对吧。他不是说直接把用户扔进来就行了,你看我们这在这边。刚写的。参数需要。通过用户的对象转成我们的object对象才可以,所以呢,这个参数是object对象的一个一个数组。呃,等于我们建一个对象数组。在这里边我们获取用户的呃,Get user ID,第一个参数是ID,呃,第二个参数。
27:09
Get username。第二参数是用户名。可以把它。呃,招开心。第二,参数用名。然后优点get第三个参数是应该是密码。密码逗号第四个参数。呃,第四个参数应该是性别。这个数据表对上第五个参数。就是他的生日birthday birthday第六个参数。我们的那个扩展。第七个参数是。呃。Email。第八个参数是。电话。然后。优点get,然后是地址。
28:03
As。然后是状态。如果是一是前台用户,如果二是后台用户啊。来看一下这块有个错误,什么错误呢?返回类型,那我们这块它执行完,如果有影响行数,影响几号,它返回数据集。直接返回。没问题,看。啊,写错。你看。那这个服务插入数据就来了,那我们。处理用户的时候,我们在这块就可以直接调用我们的,呃刚做的这个呃方法,然后呢,把我们这个数据插入到数据库,这个就比较比较方便了,而不是说所有的代码都写在控制器里面,都写在里面不影响so里边的业务流程,这里边流流程就很清晰了。接收参数对吧,然后呢,用接收参数创建一个实体,将实体插入到这个呃数据库里边,插入到这个数据库中,比如说我们叫做。
29:09
LK以里边的,呃。呃,优势。DAO点。哦。这个是,呃,列名我们现在。因为它是我们做的方法,前面做的呢是呃静态方法,所以呢,我们这块可以直接调用它的。Insert的方法,把用户U直接放进来,那我们就插入到数据库里头了。好,没有错误。大家把这块。返回的就是如果成功返回电行的函数,那我们在这块业务流程就比较清晰了,你看加个数据库这条语句就没有用了。函数,那我们这就可以判断,如果Co nt大于零,就证明我们加入数据库是成功的。如果是小于零的话,我们就失败了,大于零成功,我们就转向直接用户列表页面就可以了,你看这块有一个错误。
30:07
呃,无效的,参这个。是。最后一群的。如果吸烟。大于零。构全等。如果。吸油烟机。大雨。因为它这个输入法就变。好。大家要看错误怎么发生的,然后去解决,这样的话我们整个流程就行了,那我们看一下数据表能不能加入成功,那我们改了,So,我们需要重新运行一下。好,没问题,那我们到我们的页面里边。嗯。
31:08
是爱的你。I。一个就可以了,我们试一下,看一下我们能不能听呢,比如说。用户名艾特密登录密码123,设置密码123,但我们这没有验证啊,性别男,出生日期。随便写一个电子邮箱。AAA这A。手机号码1122送货地址。随便写几个提交。500错误,我们查一下这个错误在哪,看一下空指针异常。空指针异常,我们看一下。48号。控制着应该是呃,连接没连接上,连接没连接上驱动咱们加载的没问题。
32:04
有。你再运行一下。看一下错在哪?现在问题是没连接上。同时第一章我们看一下答案错误,信息异常。控制登上行。未知数据库啊,少写个Y。我们找到。手。我们在预定这。
33:01
回来。听讲。好,没问题,我们到数据库里查看一下来。好,有一条数据就可以了,我们也可以用这个去看一下表。这还不如。我们这个。可以看到一条数据已经加入到数据库了。那这说明已经成功了,那我们下节课呢开始,呃,课下呢,我会多加一些数据进来,然后我们做这个列表页面。
我来说两句